【问题标题】:Form Field API?表单字段 API?
【发布时间】:2010-10-12 06:31:21
【问题描述】:

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

谢谢

【问题讨论】:

  • 你有来源。为什么需要这样做?

标签: python django django-forms


【解决方案1】:

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

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

希望有帮助!

【讨论】:

    【解决方案2】:

    我不确定这是否是您想要的,但如果您想知道它最终会出现在 HTML 中的字段类型,您可以通过以下方式进行检查:

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

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

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

    【讨论】:

      【解决方案3】:

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

      给它上一堂课怎么样。

      如果你还不知道,class 属性会识别这个:

      class="hello there you"
      

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-10-11
        • 1970-01-01
        • 2015-02-22
        • 1970-01-01
        相关资源
        最近更新 更多