Kaydet (Commit) fafb6cf0 authored tarafından Claude Paroz's avatar Claude Paroz

Fixed #21472 -- Fixed inline formsets display when parent pk is 0

Thanks agale031176@gmail.com for the report.
üst 8f5a688d
...@@ -843,7 +843,7 @@ class BaseInlineFormSet(BaseModelFormSet): ...@@ -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 ...@@ -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).
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): ...@@ -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)
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment