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
|
||||
if queryset is None:
|
||||
queryset = self.model._default_manager
|
||||
if self.instance.pk:
|
||||
if self.instance.pk is not None:
|
||||
qs = queryset.filter(**{self.fk.name: self.instance})
|
||||
else:
|
||||
qs = queryset.none()
|
||||
|
|
|
@ -26,3 +26,5 @@ Bug fixes
|
|||
for the non-breaking space was returned verbatim (#21415).
|
||||
* Fixed :djadmin:`loaddata` error when fixture file name contained any dots
|
||||
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 django.forms.models import inlineformset_factory
|
||||
from django.test import TestCase
|
||||
from django.test import TestCase, skipUnlessDBFeature
|
||||
from django.utils import six
|
||||
|
||||
from .models import Poet, Poem, School, Parent, Child
|
||||
|
@ -157,3 +157,12 @@ class InlineFormsetFactoryTest(TestCase):
|
|||
inlineformset_factory(
|
||||
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