【问题标题】:Django textarea widget does not have attribute "input_type"Django textarea 小部件没有属性“input_type”
【发布时间】:2019-08-09 20:00:50
【问题描述】:

我正在尝试检查小部件的输入类型,如下所示:

for field in form:
    if field.field.widget.input_type == 'checkbox':
        do_smth()
    else:
        do_smth_else()

但似乎 Django Textarea 小部件没有属性“input_type”。

我已经通过在 try/except 块中包装 input_type 检查解决了这个问题:

try:
    input_type = field.field.widget.input_type
except AttributeError:
    input_type = 'textarea'

但我有两个问题:

1) 为什么只有这个小部件没有“input_type”,而其他的有?

2) 有没有更好的方法来解决上述问题?

对不起,我的英语很糟糕,谢谢你的提前!

【问题讨论】:

    标签: django-forms textarea django-widget


    【解决方案1】:

    这不是一个真正的答案,无论如何都不是一个令人满意的答案:https://code.djangoproject.com/ticket/30306

    简而言之:“我们没有添加它”。

    【讨论】:

    • 所以,对第 2 点的回答应该类似于“使用if hasattr(widget, 'input_type')”,我想.. 除非他们当然会在未来添加 input_type。无论如何,谢谢您提供信息。
    【解决方案2】:

    我的方法。确保顺序如图所示,否则会出现错误...

    from django.forms.widgets import Textarea
    
    if isinstance(field.widget, Textarea) or field.widget.input_type == 'text':
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-03-14
      • 1970-01-01
      • 1970-01-01
      • 2015-08-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-08-24
      相关资源
      最近更新 更多