當前位置: 首頁>>代碼示例>>Python>>正文


Python formsets.formset_factory方法代碼示例

本文整理匯總了Python中django.forms.formsets.formset_factory方法的典型用法代碼示例。如果您正苦於以下問題:Python formsets.formset_factory方法的具體用法?Python formsets.formset_factory怎麽用?Python formsets.formset_factory使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在django.forms.formsets的用法示例。


在下文中一共展示了formsets.formset_factory方法的15個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Python代碼示例。

示例1: modelformset_factory

# 需要導入模塊: from django.forms import formsets [as 別名]
# 或者: from django.forms.formsets import formset_factory [as 別名]
def modelformset_factory(model, form=ModelForm, formfield_callback=None,
                         formset=BaseModelFormSet,
                         extra=1, can_delete=False, can_order=False,
                         max_num=None, fields=None, exclude=None):
    """
    Returns a FormSet class for the given Django model class.
    """
    form = modelform_factory(model, form=form, fields=fields, exclude=exclude,
                             formfield_callback=formfield_callback)
    FormSet = formset_factory(form, formset, extra=extra, max_num=max_num,
                              can_order=can_order, can_delete=can_delete)
    FormSet.model = model
    return FormSet


# InlineFormSets ############################################################# 
開發者ID:blackye,項目名稱:luscan-devel,代碼行數:18,代碼來源:models.py

示例2: test_min_num_displaying_more_than_one_blank_form

# 需要導入模塊: from django.forms import formsets [as 別名]
# 或者: from django.forms.formsets import formset_factory [as 別名]
def test_min_num_displaying_more_than_one_blank_form(self):
        """"
        More than 1 empty form can also be displayed using formset_factory's
        min_num argument. It will (essentially) increment the extra argument.
        """
        ChoiceFormSet = formset_factory(Choice, extra=1, min_num=1)
        formset = ChoiceFormSet(auto_id=False, prefix='choices')
        form_output = []
        for form in formset.forms:
            form_output.append(form.as_ul())
        # Min_num forms are required; extra forms can be empty.
        self.assertFalse(formset.forms[0].empty_permitted)
        self.assertTrue(formset.forms[1].empty_permitted)
        self.assertHTMLEqual(
            '\n'.join(form_output),
            """<li>Choice: <input type="text" name="choices-0-choice"></li>
<li>Votes: <input type="number" name="choices-0-votes"></li>
<li>Choice: <input type="text" name="choices-1-choice"></li>
<li>Votes: <input type="number" name="choices-1-votes"></li>"""
        ) 
開發者ID:nesdis,項目名稱:djongo,代碼行數:22,代碼來源:test_formsets.py

示例3: test_single_form_completed

# 需要導入模塊: from django.forms import formsets [as 別名]
# 或者: from django.forms.formsets import formset_factory [as 別名]
def test_single_form_completed(self):
        """Just one form may be completed."""
        data = {
            'choices-TOTAL_FORMS': '3',  # the number of forms rendered
            'choices-INITIAL_FORMS': '0',  # the number of forms with initial data
            'choices-MIN_NUM_FORMS': '0',  # min number of forms
            'choices-MAX_NUM_FORMS': '0',  # max number of forms
            'choices-0-choice': 'Calexico',
            'choices-0-votes': '100',
            'choices-1-choice': '',
            'choices-1-votes': '',
            'choices-2-choice': '',
            'choices-2-votes': '',
        }
        ChoiceFormSet = formset_factory(Choice, extra=3)
        formset = ChoiceFormSet(data, auto_id=False, prefix='choices')
        self.assertTrue(formset.is_valid())
        self.assertEqual([form.cleaned_data for form in formset.forms], [{'votes': 100, 'choice': 'Calexico'}, {}, {}]) 
開發者ID:nesdis,項目名稱:djongo,代碼行數:20,代碼來源:test_formsets.py

示例4: test_formset_validate_max_flag

# 需要導入模塊: from django.forms import formsets [as 別名]
# 或者: from django.forms.formsets import formset_factory [as 別名]
def test_formset_validate_max_flag(self):
        """
        If validate_max is set and max_num is less than TOTAL_FORMS in the
        data, a ValidationError is raised. MAX_NUM_FORMS in the data is
        irrelevant here (it's output as a hint for the client but its value
        in the returned data is not checked).
        """
        data = {
            'choices-TOTAL_FORMS': '2',  # the number of forms rendered
            'choices-INITIAL_FORMS': '0',  # the number of forms with initial data
            'choices-MIN_NUM_FORMS': '0',  # min number of forms
            'choices-MAX_NUM_FORMS': '2',  # max number of forms - should be ignored
            'choices-0-choice': 'Zero',
            'choices-0-votes': '0',
            'choices-1-choice': 'One',
            'choices-1-votes': '1',
        }
        ChoiceFormSet = formset_factory(Choice, extra=1, max_num=1, validate_max=True)
        formset = ChoiceFormSet(data, auto_id=False, prefix='choices')
        self.assertFalse(formset.is_valid())
        self.assertEqual(formset.non_form_errors(), ['Please submit 1 or fewer forms.']) 
開發者ID:nesdis,項目名稱:djongo,代碼行數:23,代碼來源:test_formsets.py

示例5: test_formset_validate_min_flag

# 需要導入模塊: from django.forms import formsets [as 別名]
# 或者: from django.forms.formsets import formset_factory [as 別名]
def test_formset_validate_min_flag(self):
        """
        If validate_min is set and min_num is more than TOTAL_FORMS in the
        data, a ValidationError is raised. MIN_NUM_FORMS in the data is
        irrelevant here (it's output as a hint for the client but its value
        in the returned data is not checked).
        """
        data = {
            'choices-TOTAL_FORMS': '2',  # the number of forms rendered
            'choices-INITIAL_FORMS': '0',  # the number of forms with initial data
            'choices-MIN_NUM_FORMS': '0',  # min number of forms
            'choices-MAX_NUM_FORMS': '0',  # max number of forms - should be ignored
            'choices-0-choice': 'Zero',
            'choices-0-votes': '0',
            'choices-1-choice': 'One',
            'choices-1-votes': '1',
        }
        ChoiceFormSet = formset_factory(Choice, extra=1, min_num=3, validate_min=True)
        formset = ChoiceFormSet(data, auto_id=False, prefix='choices')
        self.assertFalse(formset.is_valid())
        self.assertEqual(formset.non_form_errors(), ['Please submit 3 or more forms.']) 
開發者ID:nesdis,項目名稱:djongo,代碼行數:23,代碼來源:test_formsets.py

示例6: test_formset_validate_min_unchanged_forms

# 需要導入模塊: from django.forms import formsets [as 別名]
# 或者: from django.forms.formsets import formset_factory [as 別名]
def test_formset_validate_min_unchanged_forms(self):
        """
        min_num validation doesn't consider unchanged forms with initial data
        as "empty".
        """
        initial = [
            {'choice': 'Zero', 'votes': 0},
            {'choice': 'One', 'votes': 0},
        ]
        data = {
            'choices-TOTAL_FORMS': '2',
            'choices-INITIAL_FORMS': '2',
            'choices-MIN_NUM_FORMS': '0',
            'choices-MAX_NUM_FORMS': '2',
            'choices-0-choice': 'Zero',
            'choices-0-votes': '0',
            'choices-1-choice': 'One',
            'choices-1-votes': '1',  # changed from initial
        }
        ChoiceFormSet = formset_factory(Choice, min_num=2, validate_min=True)
        formset = ChoiceFormSet(data, auto_id=False, prefix='choices', initial=initial)
        self.assertFalse(formset.forms[0].has_changed())
        self.assertTrue(formset.forms[1].has_changed())
        self.assertTrue(formset.is_valid()) 
開發者ID:nesdis,項目名稱:djongo,代碼行數:26,代碼來源:test_formsets.py

示例7: test_formset_with_deletion_invalid_deleted_form

# 需要導入模塊: from django.forms import formsets [as 別名]
# 或者: from django.forms.formsets import formset_factory [as 別名]
def test_formset_with_deletion_invalid_deleted_form(self):
        """
        deleted_forms works on a valid formset even if a deleted form would
        have been invalid.
        """
        class Person(Form):
            name = CharField()

        PeopleForm = formset_factory(form=Person, can_delete=True)
        p = PeopleForm({
            'form-0-name': '',
            'form-0-DELETE': 'on',  # no name!
            'form-TOTAL_FORMS': 1,
            'form-INITIAL_FORMS': 1,
            'form-MIN_NUM_FORMS': 0,
            'form-MAX_NUM_FORMS': 1},
        )
        self.assertTrue(p.is_valid())
        self.assertEqual(p._errors, [])
        self.assertEqual(len(p.deleted_forms), 1) 
開發者ID:nesdis,項目名稱:djongo,代碼行數:22,代碼來源:test_formsets.py

示例8: test_invalid_deleted_form_with_ordering

# 需要導入模塊: from django.forms import formsets [as 別名]
# 或者: from django.forms.formsets import formset_factory [as 別名]
def test_invalid_deleted_form_with_ordering(self):
        """
        Can get ordered_forms from a valid formset even if a deleted form
        would have been invalid.
        """
        class Person(Form):
            name = CharField()

        PeopleForm = formset_factory(form=Person, can_delete=True, can_order=True)
        p = PeopleForm({
            'form-0-name': '',
            'form-0-DELETE': 'on',  # no name!
            'form-TOTAL_FORMS': 1,
            'form-INITIAL_FORMS': 1,
            'form-MIN_NUM_FORMS': 0,
            'form-MAX_NUM_FORMS': 1
        })
        self.assertTrue(p.is_valid())
        self.assertEqual(p.ordered_forms, []) 
開發者ID:nesdis,項目名稱:djongo,代碼行數:21,代碼來源:test_formsets.py

示例9: test_limiting_max_forms

# 需要導入模塊: from django.forms import formsets [as 別名]
# 或者: from django.forms.formsets import formset_factory [as 別名]
def test_limiting_max_forms(self):
        """Limiting the maximum number of forms with max_num."""
        # When not passed, max_num will take a high default value, leaving the
        # number of forms only controlled by the value of the extra parameter.
        LimitedFavoriteDrinkFormSet = formset_factory(FavoriteDrinkForm, extra=3)
        formset = LimitedFavoriteDrinkFormSet()
        form_output = []
        for form in formset.forms:
            form_output.append(str(form))
        self.assertHTMLEqual(
            '\n'.join(form_output),
            """<tr><th><label for="id_form-0-name">Name:</label></th>
<td><input type="text" name="form-0-name" id="id_form-0-name"></td></tr>
<tr><th><label for="id_form-1-name">Name:</label></th>
<td><input type="text" name="form-1-name" id="id_form-1-name"></td></tr>
<tr><th><label for="id_form-2-name">Name:</label></th>
<td><input type="text" name="form-2-name" id="id_form-2-name"></td></tr>"""
        )
        # If max_num is 0 then no form is rendered at all.
        LimitedFavoriteDrinkFormSet = formset_factory(FavoriteDrinkForm, extra=3, max_num=0)
        formset = LimitedFavoriteDrinkFormSet()
        form_output = []
        for form in formset.forms:
            form_output.append(str(form))
        self.assertEqual('\n'.join(form_output), "") 
開發者ID:nesdis,項目名稱:djongo,代碼行數:27,代碼來源:test_formsets.py

示例10: test_max_num_zero_with_initial

# 需要導入模塊: from django.forms import formsets [as 別名]
# 或者: from django.forms.formsets import formset_factory [as 別名]
def test_max_num_zero_with_initial(self):
        # initial trumps max_num
        initial = [
            {'name': 'Fernet and Coke'},
            {'name': 'Bloody Mary'},
        ]
        LimitedFavoriteDrinkFormSet = formset_factory(FavoriteDrinkForm, extra=1, max_num=0)
        formset = LimitedFavoriteDrinkFormSet(initial=initial)
        form_output = []
        for form in formset.forms:
            form_output.append(str(form))
        self.assertHTMLEqual(
            '\n'.join(form_output),
            """<tr><th><label for="id_form-0-name">Name:</label></th>
<td><input id="id_form-0-name" name="form-0-name" type="text" value="Fernet and Coke"></td></tr>
<tr><th><label for="id_form-1-name">Name:</label></th>
<td><input id="id_form-1-name" name="form-1-name" type="text" value="Bloody Mary"></td></tr>"""
        ) 
開發者ID:nesdis,項目名稱:djongo,代碼行數:20,代碼來源:test_formsets.py

示例11: test_more_initial_than_max_num

# 需要導入模塊: from django.forms import formsets [as 別名]
# 或者: from django.forms.formsets import formset_factory [as 別名]
def test_more_initial_than_max_num(self):
        """
        More initial forms than max_num results in all initial forms being
        displayed (but no extra forms).
        """
        initial = [
            {'name': 'Gin Tonic'},
            {'name': 'Bloody Mary'},
            {'name': 'Jack and Coke'},
        ]
        LimitedFavoriteDrinkFormSet = formset_factory(FavoriteDrinkForm, extra=1, max_num=2)
        formset = LimitedFavoriteDrinkFormSet(initial=initial)
        form_output = []
        for form in formset.forms:
            form_output.append(str(form))
        self.assertHTMLEqual(
            '\n'.join(form_output),
            """<tr><th><label for="id_form-0-name">Name:</label></th>
<td><input id="id_form-0-name" name="form-0-name" type="text" value="Gin Tonic"></td></tr>
<tr><th><label for="id_form-1-name">Name:</label></th>
<td><input id="id_form-1-name" name="form-1-name" type="text" value="Bloody Mary"></td></tr>
<tr><th><label for="id_form-2-name">Name:</label></th>
<td><input id="id_form-2-name" name="form-2-name" type="text" value="Jack and Coke"></td></tr>"""
        ) 
開發者ID:nesdis,項目名稱:djongo,代碼行數:26,代碼來源:test_formsets.py

示例12: test_more_initial_form_result_in_one

# 需要導入模塊: from django.forms import formsets [as 別名]
# 或者: from django.forms.formsets import formset_factory [as 別名]
def test_more_initial_form_result_in_one(self):
        """
        One form from initial and extra=3 with max_num=2 results in the one
        initial form and one extra.
        """
        initial = [
            {'name': 'Gin Tonic'},
        ]
        LimitedFavoriteDrinkFormSet = formset_factory(FavoriteDrinkForm, extra=3, max_num=2)
        formset = LimitedFavoriteDrinkFormSet(initial=initial)
        form_output = []
        for form in formset.forms:
            form_output.append(str(form))
        self.assertHTMLEqual(
            '\n'.join(form_output),
            """<tr><th><label for="id_form-0-name">Name:</label></th>
<td><input type="text" name="form-0-name" value="Gin Tonic" id="id_form-0-name"></td></tr>
<tr><th><label for="id_form-1-name">Name:</label></th>
<td><input type="text" name="form-1-name" id="id_form-1-name"></td></tr>"""
        ) 
開發者ID:nesdis,項目名稱:djongo,代碼行數:22,代碼來源:test_formsets.py

示例13: test_formset_splitdatetimefield

# 需要導入模塊: from django.forms import formsets [as 別名]
# 或者: from django.forms.formsets import formset_factory [as 別名]
def test_formset_splitdatetimefield(self):
        """
        Formset works with SplitDateTimeField(initial=datetime.datetime.now).
        """
        class SplitDateTimeForm(Form):
            when = SplitDateTimeField(initial=datetime.datetime.now)

        SplitDateTimeFormSet = formset_factory(SplitDateTimeForm)
        data = {
            'form-TOTAL_FORMS': '1',
            'form-INITIAL_FORMS': '0',
            'form-0-when_0': '1904-06-16',
            'form-0-when_1': '15:51:33',
        }
        formset = SplitDateTimeFormSet(data)
        self.assertTrue(formset.is_valid()) 
開發者ID:nesdis,項目名稱:djongo,代碼行數:18,代碼來源:test_formsets.py

示例14: test_formset_calls_forms_is_valid

# 需要導入模塊: from django.forms import formsets [as 別名]
# 或者: from django.forms.formsets import formset_factory [as 別名]
def test_formset_calls_forms_is_valid(self):
        """Formsets call is_valid() on each form."""
        class AnotherChoice(Choice):
            def is_valid(self):
                self.is_valid_called = True
                return super().is_valid()

        AnotherChoiceFormSet = formset_factory(AnotherChoice)
        data = {
            'choices-TOTAL_FORMS': '1',  # number of forms rendered
            'choices-INITIAL_FORMS': '0',  # number of forms with initial data
            'choices-MIN_NUM_FORMS': '0',  # min number of forms
            'choices-MAX_NUM_FORMS': '0',  # max number of forms
            'choices-0-choice': 'Calexico',
            'choices-0-votes': '100',
        }
        formset = AnotherChoiceFormSet(data, auto_id=False, prefix='choices')
        self.assertTrue(formset.is_valid())
        self.assertTrue(all(form.is_valid_called for form in formset.forms)) 
開發者ID:nesdis,項目名稱:djongo,代碼行數:21,代碼來源:test_formsets.py

示例15: test_formset_total_error_count_with_non_form_errors

# 需要導入模塊: from django.forms import formsets [as 別名]
# 或者: from django.forms.formsets import formset_factory [as 別名]
def test_formset_total_error_count_with_non_form_errors(self):
        data = {
            'choices-TOTAL_FORMS': '2',  # the number of forms rendered
            'choices-INITIAL_FORMS': '0',  # the number of forms with initial data
            'choices-MAX_NUM_FORMS': '2',  # max number of forms - should be ignored
            'choices-0-choice': 'Zero',
            'choices-0-votes': '0',
            'choices-1-choice': 'One',
            'choices-1-votes': '1',
        }
        ChoiceFormSet = formset_factory(Choice, extra=1, max_num=1, validate_max=True)
        formset = ChoiceFormSet(data, auto_id=False, prefix='choices')
        self.assertEqual(formset.total_error_count(), 1)
        data['choices-1-votes'] = ''
        formset = ChoiceFormSet(data, auto_id=False, prefix='choices')
        self.assertEqual(formset.total_error_count(), 2) 
開發者ID:nesdis,項目名稱:djongo,代碼行數:18,代碼來源:test_formsets.py


注:本文中的django.forms.formsets.formset_factory方法示例由純淨天空整理自Github/MSDocs等開源代碼及文檔管理平台,相關代碼片段篩選自各路編程大神貢獻的開源項目,源碼版權歸原作者所有,傳播和使用請參考對應項目的License;未經允許,請勿轉載。