问题描述
我正在使用python版本3.6.8和Django版本3.0.8。我在这个论坛上看到了很多与此主题相关的主题,但是有些答案却很旧。不知道该跟随哪一个。我尝试参考django官方文档,该文档准确地谈论了我想要自定义的标记,从用于收音机选择的默认ul / li标记到根据我的CSS自己的样式。不知道我想念的是什么。任何人都可以帮助我如何在我使用的Django版本中实现这一目标。预先感谢。
Django官方文档:
https://docs.djangoproject.com/en/3.0/ref/forms/widgets/#radioselect
当我尝试执行此操作时,我收到错误消息:模板渲染'ChoiceField'对象期间的错误不可迭代
forms.py代码如下:
from django import forms
class ContactUsForm(forms.Form):
name = forms.CharField(label='Name',widget=forms.TextInput(attrs={'class' : 'form__input','placeholder' : 'Name'}))
email = forms.EmailField(label='Email',widget=forms.EmailInput(attrs={'class' : 'form__input','placeholder' : 'Email'}))
mobile = forms.CharField(label='Mobile','placeholder' : 'Mobile','type' : 'tel'}))
message = forms.CharField(label='Message',widget=forms.Textarea(attrs={'class' : 'form__input','placeholder' : 'Message','rows' : "4",'cols' : '50'}))
CHOICES = [
('1','New Projects'),('2','Interiors'),('3','Land Resale'),('4','Joint Venture'),('5','Renovation'),('6','Others'),]
cat_field = forms.ChoiceField(widget=forms.RadioSelect(attrs={'class' : 'form__radio-input','name' : 'services'}),choices=CHOICES)
我在模板中使用的模板标签如下:
{% for radio in form.fields.cat_field %}
<div class="myradio">
{{ radio }}
</div>
{% endfor %}
解决方法
请像这样使用。这里考虑小部件input type
。键入radio
,然后执行操作。
{% for field in form.visible_fields %}
<li>
{% if field.field.widget.input_type == 'radio' %}
<div class="myradio">
{{ radio }}
</div>
{% endif %}
</li>
{% endfor %}
要打印您的小部件类型
{{ [FIELD].field.widget.input_type }}
[FIELD]是您的字段名称。