Form Field API?

时间:2009-03-09 19:01:01

标签: python django django-forms

我正在遍历表单字段列表。如何识别每个字段的类型?对于复选框,我可以调用field.is_checkbox ...列表,multiplechoicefields等有类似的方法吗?

谢谢

3 个答案:

答案 0 :(得分:3)

查看表单中每个字段的类:

for f_name, f_type in my_form_instance.fields.items():
    print "I am a ",type(f_type)
    # or f_type.__class__

这将产生类似于<class 'django.forms.fields.BooleanField'>的输出。

如果您愿意,可以将名称作为简单字符串获取:

print type(f_type).__name__
# produces 'BooleanField'

编辑:还要注意字段和窗口小部件之间的区别。 Django中没有Checkbox字段,只有CheckboxInput小部件,这是BooleanField的默认值。您的意思是查找窗口小部件(特定于渲染)或字段(与该表单字段的数据类型和验证有更多关系)?如果是小部件,您可以使用以下方式获取小部件类型:

f_type.widget

希望有所帮助!

答案 1 :(得分:1)

我不确定这是否是您想要的,但是如果您想知道哪种字段最终会出现在HTML中,您可以使用以下方法进行检查:

{% for field in form %}
    {{ field.field.widget.input_type }}
{% endfor %}

widget.input_type将保存文本,密码,选择等

P.S。直到5秒前我才知道这一点。 #django irc.freenode.net总是有很好的帮助。

答案 2 :(得分:-1)

假设您在这里使用HTML ...因为它不是很清楚。

给它额外的课程怎么样。

如果你不知道allready,那么class属性会识别出来:

class="hello there you"

有3个班级。班级'你好',班级'那里',班级'你'。 因此,如果他们已经有一个类,只需添加一个空格和您的自定义clasname。