当前位置: 首页>>代码示例>>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;未经允许,请勿转载。