Fixed #21472 -- Fixed inline formsets display when parent pk is 0
Thanks agale031176@gmail.com for the report.
This commit is contained in:
parent
8f5a688d00
commit
fafb6cf049
|
@ -843,7 +843,7 @@ class BaseInlineFormSet(BaseModelFormSet):
|
||||||
self.save_as_new = save_as_new
|
self.save_as_new = save_as_new
|
||||||
if queryset is None:
|
if queryset is None:
|
||||||
queryset = self.model._default_manager
|
queryset = self.model._default_manager
|
||||||
if self.instance.pk:
|
if self.instance.pk is not None:
|
||||||
qs = queryset.filter(**{self.fk.name: self.instance})
|
qs = queryset.filter(**{self.fk.name: self.instance})
|
||||||
else:
|
else:
|
||||||
qs = queryset.none()
|
qs = queryset.none()
|
||||||
|
|
|
@ -26,3 +26,5 @@ Bug fixes
|
||||||
for the non-breaking space was returned verbatim (#21415).
|
for the non-breaking space was returned verbatim (#21415).
|
||||||
* Fixed :djadmin:`loaddata` error when fixture file name contained any dots
|
* Fixed :djadmin:`loaddata` error when fixture file name contained any dots
|
||||||
non related to file extensions (#21457).
|
non related to file extensions (#21457).
|
||||||
|
* Fixed display of inline instances in formsets when parent has 0 for primary
|
||||||
|
key (#21472).
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
from __future__ import unicode_literals
|
from __future__ import unicode_literals
|
||||||
|
|
||||||
from django.forms.models import inlineformset_factory
|
from django.forms.models import inlineformset_factory
|
||||||
from django.test import TestCase
|
from django.test import TestCase, skipUnlessDBFeature
|
||||||
from django.utils import six
|
from django.utils import six
|
||||||
|
|
||||||
from .models import Poet, Poem, School, Parent, Child
|
from .models import Poet, Poem, School, Parent, Child
|
||||||
|
@ -157,3 +157,12 @@ class InlineFormsetFactoryTest(TestCase):
|
||||||
inlineformset_factory(
|
inlineformset_factory(
|
||||||
Parent, Child, exclude=('school',), fk_name='mother'
|
Parent, Child, exclude=('school',), fk_name='mother'
|
||||||
)
|
)
|
||||||
|
|
||||||
|
@skipUnlessDBFeature('allows_primary_key_0')
|
||||||
|
def test_zero_primary_key(self):
|
||||||
|
# Regression test for #21472
|
||||||
|
poet = Poet.objects.create(id=0, name='test')
|
||||||
|
poem = poet.poem_set.create(name='test poem')
|
||||||
|
PoemFormSet = inlineformset_factory(Poet, Poem, fields="__all__", extra=0)
|
||||||
|
formset = PoemFormSet(None, instance=poet)
|
||||||
|
self.assertEqual(len(formset.forms), 1)
|
||||||
|
|
Loading…
Reference in New Issue