Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/41.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django表单(集合)-此字段为必填字段_Python_Django_Forms_Django Forms - Fatal编程技术网

Python Django表单(集合)-此字段为必填字段

Python Django表单(集合)-此字段为必填字段,python,django,forms,django-forms,Python,Django,Forms,Django Forms,当我编辑我的表单/表单集并删除一个表单时,在大多数情况下,它不会改变,并且我看到错误“此字段是必需的” EG有一个“表格XYZ”,我把它改为“----”(空白),提交后显示“此字段是必需的”,如屏幕截图所示 Views.py: def contest_admin(request, contest_slug): contest = get_object_or_404(Contest, slug=contest_slug) ontestFormsFormSet = inlinefor

当我编辑我的表单/表单集并删除一个表单时,在大多数情况下,它不会改变,并且我看到错误“此字段是必需的” EG有一个“表格XYZ”,我把它改为“----”(空白),提交后显示“此字段是必需的”,如屏幕截图所示 Views.py:

def contest_admin(request, contest_slug):
    contest = get_object_or_404(Contest, slug=contest_slug)
    ontestFormsFormSet = inlineformset_factory(Contest,
                                            ContestForms,
                                            fields=('form', 'main_entry', 'user_modifiable',),
                                            extra=2,
                                            )
    contest_desc = ContestDescForm(request.POST or None, instance=contest)
    contest_forms = ContestFormsFormSet(request.POST or None, instance=contest)
    if request.method == 'POST':
        if contest_desc.is_valid() and contest_forms.is_valid():
            contest_desc.save()
            contest_forms.save()
    context = {
        ...
    }
    template_name = "contests/admin/_admin.html"
    return render(request, template_name, context)
Models.py:

class Contest(models.Model):
    name = models.CharField('Contest Name', max_length=100)
    slug = models.SlugField(unique=True)
    capacity = models.IntegerField('Capacity')
    team_size = models.IntegerField('Team size', default=1)
    description = models.CharField('Description', max_length=1000)
    date_opened = models.DateField('Date opened')
    date_registration_closed = models.DateField('Date registration closed')
    date_closed = models.DateField('Date closed')
    forms = models.ManyToManyField(FormEntry, through='ContestForms')

class ContestForms(models.Model):
    contest = models.ForeignKey(Contest, on_delete=models.CASCADE)
    form = models.OneToOneField(FormEntry)
    main_entry = models.BooleanField('Main entry')
    user_modifiable = models.BooleanField('Modifiable')

    class Meta:
        verbose_name_plural = "ContestForms"
Forms.py:

class ContestDescForm(forms.ModelForm):
    widget_attrs = {
    'class': "form-control",
    'type': 'date',
}
    description = CharField(widget=forms.Textarea)
    date_opened = DateField(widget=DateInput(attrs={'type': 'date'}))
    date_registration_closed = DateField(widget=DateInput(attrs={'type': 'date'}))
    date_closed = DateField(widget=DateInput(attrs={'type': 'date'}))

    class Meta:
        model = Contest
        exclude = ('slug', 'forms',)


class ContestFormsForm(forms.ModelForm):
    form = ModelChoiceField(required=False, queryset=FormEntry.objects.all())

class Meta:
    model = ContestForms
    exclude = ()
编辑: 模板:

<form method="post" action="">
    {% csrf_token %}
        {{ contest_desc|bootstrap }}
            <table>
            {{ contest_forms|bootstrap_inline }}
            </table>
        <div class="form-group">
            <button type="submit" class="btn btn-primary">Submit</button>
        </div>
    </form>

{%csrf_令牌%}
{{contest|desc | bootstrap}}
{{contest_forms}bootstrap_inline}
提交

您是否尝试添加blank=True

class Contest(models.Model):
    name = models.CharField('Contest Name', max_length=100,blank=True)

class ContestForms(models.Model):
    contest = models.ForeignKey(Contest, on_delete=models.CASCADE,blank=True,null=True)

您是否尝试添加blank=True

class Contest(models.Model):
    name = models.CharField('Contest Name', max_length=100,blank=True)

class ContestForms(models.Model):
    contest = models.ForeignKey(Contest, on_delete=models.CASCADE,blank=True,null=True)

你应该在models.py中的每个字段中添加blank=True,如果你想让可能性为空,我不认为这是一个解决方案-当我将竞赛形式保留为空时,我希望竞赛形式条目将被删除。你应该添加blank=True,在models.py中的每个字段中,如果您想让可能性为空,我不认为这是一个解决方案-当我将竞赛表格中的竞赛留空时,我希望竞赛表格条目将被删除。