我有一个电视频道数据库,我正在使用带有ModelMultipleChoiceField和CheckboxSelectMultiple小部件的Django表单来显示。
模板呈现得很好,但是我如何访问属于表单的ModelMultipleChoiceField字段一部分的单个对象的字段?
渠道模型
class Channel(models.Model):
name = models.CharField(max_length=50)
def __str__(self):
return self.name
这是表格
class ChannelForm(forms.Form):
channels_list = forms.ModelMultipleChoiceField(queryset=Channel.objects.all().order_by('name'),widget=forms.CheckboxSelectMultiple)
这就是我尝试通过执行{{channel.name}}
访问模板中每个通道的“名称”字段的方式。
{% for channel in form.channels_list %}
{{ channel }} accessing: {{ channel.name }}<br>
{% endfor %}
在渲染时,它只说“正在访问:”而没有频道名称
这是我所要求的view.py:
def generage_recommendation(request):
if request.method == 'POST':
# POST code ...
else:
form = RecommendationRequestForm()
return render(request, 'recommendation_home.html', {'form':form})
答案 0 :(得分:0)
您可以发布您的 views.py 文件。
您不必使用
模板中的form.channels
。
尝试使用它。
{% for channel in channels_list %}
{{ channel }} accessing: {{ channel.name }}<br>
{% endfor %}
答案 1 :(得分:0)
在您的 views.py 中,
使用ChannelForm
而不是RecommendationRequestForm
。
在模板中,您可以像这样访问ModelMultipleChoiceField的字段值:
{% for key, value in form.channels_list.field.choices %}
Channel ID = {{ key }}
Channel Name = {{ value }}
{% endfor %}
(通知.field.
代码)