summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorClaude Paroz <claude@2xlibre.net>2013-11-20 21:34:29 +0100
committerClaude Paroz <claude@2xlibre.net>2013-11-20 21:36:20 +0100
commitfafb6cf049bb9f4591a8b94cffda12c081cd096f (patch)
tree05ee181d882cc468fa1dedb1581dba905dec6b53
parent8f5a688d00f2f73a0913acb04247322f13e2c971 (diff)
Fixed #21472 -- Fixed inline formsets display when parent pk is 0
Thanks agale031176@gmail.com for the report.
-rw-r--r--django/forms/models.py2
-rw-r--r--docs/releases/1.6.1.txt2
-rw-r--r--tests/inline_formsets/tests.py11
3 files changed, 13 insertions, 2 deletions
diff --git a/django/forms/models.py b/django/forms/models.py
index 9e8feb2ee9..3625dc8334 100644
--- a/django/forms/models.py
+++ b/django/forms/models.py
@@ -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()
diff --git a/docs/releases/1.6.1.txt b/docs/releases/1.6.1.txt
index d88b404bc5..d7f73903ff 100644
--- a/docs/releases/1.6.1.txt
+++ b/docs/releases/1.6.1.txt
@@ -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).
diff --git a/tests/inline_formsets/tests.py b/tests/inline_formsets/tests.py
index a16488dc79..5258907919 100644
--- a/tests/inline_formsets/tests.py
+++ b/tests/inline_formsets/tests.py
@@ -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)