django 更改模型表单集标签

ff29svar  于 2023-03-13  发布在  Go
关注(0)|答案(1)|浏览(135)

我创建了一个用于对多个字幕进行投票的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>
cbeh67ev

cbeh67ev1#

因此,如果你有确切数量的表单集尝试:
在views.py中添加型号formset_factory的表单集:
投票表单集=模型表单集工厂(是否投票,表单=是否投票表单,额外=3,表单集=是否投票模型表单集)
在www.example.com中forms.py创建:
类YesNoVoteModelFormSet(表单.基本内联表单集):

def __init__(self, *args, **kwargs):
    super().__init__(*args, **kwargs)
    label_list = ["A", "B", "C"]
    for num, form in enumerate(self.forms):
        form.fields["vote"].label = label_list[num]

更多信息请访问https://docs.djangoproject.com/en/4.0/ref/forms/models/#modelformset-factory

相关问题