我有一个带有多项选择字段的 ModelForm。这些选择是属于特定俱乐部的徒步旅行者的填充实例。
我想自定义表单的显示方式,方法是在表格中显示选项,其中第一列包含复选框,另外几列显示每个徒步旅行者的详细信息。例如,列是(复选框、姓名、年龄、最喜欢的远足路线)。
我不知道如何解决这个问题。如何访问和显示表单字段选项及其在模板中关联的模型实例字段。有人知道 Django 的方法吗?
#models.py
class Club(models.Model):
title = models.CharField()
hikers = models.ManyToManyField(Hikers)
class Hiker(models.Model):
name = models.CharField()
age = models.PositiveIntegerField()
favourite_trail = models.CharField()
#forms.py
class ClubForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
club_pk = kwargs['club_pk']
del kwargs['club_pk']
super(ClubForm, self).__init__(*args, **kwargs)
choices = [(ts.pk, ts.name) for hiker in Club.objects.filter(pk=club_pk)]
self.fields['hikers'].choices = choices
class Meta:
model = Club
fields = ('hikers',)
widgets = {'hikers': forms.CheckboxSelectMultiple}
最简单的方法是在 HTML 模板中定义整个表单。您应该能够迭代模板中的字段值,如下所示:
{% for value, text in form.hikers.field.choices %}
{{ value }}: {{ text }}
{% endfor %}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)