Django的在线联系表单集额外的条目有前缀,而不是数量(Django Inline Admin F

2019-09-19 17:02发布

我有一个管理的形式,允许和最终用户添加一个测验,而测验有答案。 当您编辑的测验,测验答案部分有4线测验答案。 第一3编号为0,1,2和第四是__prefix__

例:

<input name="quizanswer_set-0-text" value="one" class="vTextField" maxlength="255" type="text" id="id_quizanswer_set-0-text" />

<input id="id_quizanswer_set-__prefix__-text" type="text" class="vTextField" name="quizanswer_set-__prefix__-text" maxlength="255" />

当被处理的形式,它跳过第四输入,因为,我假设,前缀是不是它正在寻找。

模板代码:

{% for inline_admin_form in inline_admin_formset %}
{{ inline_admin_form.pk_field.field }} {{ inline_admin_form.fk_field.field }}

形成:

class QuizAnswerInlineFormSet(forms.models.BaseInlineFormSet):
    def is_valid(self):
        # make sure errors are populated
        _ = self.errors

        return super(QuizAnswerInlineFormSet, self).is_valid()            

    def clean(self):
        super(QuizAnswerInlineFormSet, self).clean()

        answer_count = 0
        correct_count = 0

        for form in self.forms:
            if not hasattr(form, 'cleaned_data'):
                continue
            if not form.cleaned_data:
                continue
            if not form.is_valid():
                continue
            if form.cleaned_data[forms.formsets.DELETION_FIELD_NAME]:
                continue

            answer_count += 1

            if form.cleaned_data.get("is_correct", False):
                correct_count += 1

        if answer_count < 2:
            raise ValidationError("Questions must have at least 2 answers")

        if correct_count != 1:
            raise ValidationError("There must be exactly one correct answer")

有没有人有为什么会打印的想法__PREFIX__而不是数字? 有什么我需要为此设置? 我最初没有做出形式,我只是试图修复它,我不是太熟悉这种形式的。

Answer 1:

我遇到过同样的问题。 事实证明,行不应该被显示。 添加新行,当它被用作由JavaScript模板和前缀被替换。

我发现,我是不是捡forms.css正确,因此无法找到该定义的empty-form ,其具有类display: none



文章来源: Django Inline Admin Formset extra entry has prefix instead of number
标签: django forms