summaryrefslogtreecommitdiff
path: root/tests/model_formsets
diff options
context:
space:
mode:
Diffstat (limited to 'tests/model_formsets')
-rw-r--r--tests/model_formsets/tests.py21
1 files changed, 19 insertions, 2 deletions
diff --git a/tests/model_formsets/tests.py b/tests/model_formsets/tests.py
index 03cd3b0159..43509c471f 100644
--- a/tests/model_formsets/tests.py
+++ b/tests/model_formsets/tests.py
@@ -8,7 +8,7 @@ from decimal import Decimal
from django import forms
from django.db import models
from django.forms.models import (_get_foreign_key, inlineformset_factory,
- modelformset_factory)
+ modelformset_factory, BaseModelFormSet)
from django.test import TestCase, skipUnlessDBFeature
from django.utils import six
@@ -386,6 +386,23 @@ class ModelFormsetTest(TestCase):
formset = PostFormSet()
self.assertFalse("subtitle" in formset.forms[0].fields)
+ def test_custom_queryset_init(self):
+ """
+ Test that a queryset can be overriden in the __init__ method.
+ https://docs.djangoproject.com/en/dev/topics/forms/modelforms/#changing-the-queryset
+ """
+ author1 = Author.objects.create(name='Charles Baudelaire')
+ author2 = Author.objects.create(name='Paul Verlaine')
+
+ class BaseAuthorFormSet(BaseModelFormSet):
+ def __init__(self, *args, **kwargs):
+ super(BaseAuthorFormSet, self).__init__(*args, **kwargs)
+ self.queryset = Author.objects.filter(name__startswith='Charles')
+
+ AuthorFormSet = modelformset_factory(Author, formset=BaseAuthorFormSet)
+ formset = AuthorFormSet()
+ self.assertEqual(len(formset.get_queryset()), 1)
+
def test_model_inheritance(self):
BetterAuthorFormSet = modelformset_factory(BetterAuthor, fields="__all__")
formset = BetterAuthorFormSet()
@@ -559,7 +576,7 @@ class ModelFormsetTest(TestCase):
formset = AuthorBooksFormSet2(instance=author)
self.assertEqual(len(formset.forms), 1)
self.assertHTMLEqual(formset.forms[0].as_p(),
- '<p><label for="id_bookwithcustompk_set-0-my_pk">My pk:</label> <input id="id_bookwithcustompk_set-0-my_pk" type="number" name="bookwithcustompk_set-0-my_pk" maxlength="6" /></p>\n'
+ '<p><label for="id_bookwithcustompk_set-0-my_pk">My pk:</label> <input id="id_bookwithcustompk_set-0-my_pk" type="number" name="bookwithcustompk_set-0-my_pk" /></p>\n'
'<p><label for="id_bookwithcustompk_set-0-title">Title:</label> <input id="id_bookwithcustompk_set-0-title" type="text" name="bookwithcustompk_set-0-title" maxlength="100" /><input type="hidden" name="bookwithcustompk_set-0-author" value="1" id="id_bookwithcustompk_set-0-author" /></p>')
data = {