我创建了一个用于对多个字幕进行投票的modelformset。它看起来像这样:
我想将“投票:“标签更改为不同字幕的名称(因此,如果字幕是A、B和C,A应该在第一个字段之前,B应该在第二个字段之前,以此类推)。
modelformset在www.example.com中创建views.py,如下所示:
VoteFormSet = modelformset_factory(YesNoVote, form=YesNoVotingForm, extra=3)
YesNoVotingForm看起来像这样:
class YesNoVotingForm(forms.ModelForm):
class Meta:
model = YesNoVote
fields = ['vote',]
widgets = {
'vote': forms.Select(attrs={"required": True}),
}
这就是"赞成票“模型
class YesNoVote(models.Model):
subtitle = models.CharField(max_length=128)
vote = models.CharField(choices=choices, max_length=10)
user = models.ForeignKey(User, on_delete=models.CASCADE, db_constraint=False, related_name="yesnovote_user", null=True)
election = models.ForeignKey(YesNoElection, on_delete=models.CASCADE, related_name="yesnovote")
def __str__(self):
return f"{self.user} stemde {self.vote} bij {self.subtitle} (vallend onder {self.election})"
这是一个html页面:
<form method="post">
{{ formset.management_data }}
{% csrf_token %}
{% for form in formset %}
{{ form }}
<br>
{% endfor %}
<button type="submit" name = "voting" class="btn btn-primary save">Submit</button>
Let op: Je kunt je stem niet meer wijzigen.
</form>
1条答案
按热度按时间cbeh67ev1#
因此,如果你有确切数量的表单集尝试:
在views.py中添加型号formset_factory的表单集:
投票表单集=模型表单集工厂(是否投票,表单=是否投票表单,额外=3,表单集=是否投票模型表单集)
在www.example.com中forms.py创建:
类YesNoVoteModelFormSet(表单.基本内联表单集):
更多信息请访问https://docs.djangoproject.com/en/4.0/ref/forms/models/#modelformset-factory