【问题标题】:Django widgets - add class to fieldDjango 小部件 - 将类添加到字段
【发布时间】:2018-05-31 19:35:03
【问题描述】:

我正在尝试在 django ModelForm 中为我的输入添加类,如下所示:

from django import forms
from .models import OrderProject

class OrderProjectForm(forms.ModelForm):
    def __init__(self, *args, **kwargs):
        super(OrderProjectForm, self).__init__(*args, **kwargs)
        for field in self.fields:
            if field.widget.__class__ == forms.widgets.TextInput:
                if 'class' in field.widget.attrs:
                    field.widget.attrs['class'] += 'project-form__input'
                else:
                    field.widget.attrs.update({'class':'project-form__input'})

    class Meta:
        model = OrderProject
        fields = ('name', 'customer', 'area', 'status', 'budget', 'opening_date',
                    'ending_date',)

不幸的是,我得到了错误: 'str' object has no attribute 'widget'

任何想法我做错了什么?

【问题讨论】:

    标签: python django forms widget


    【解决方案1】:

    form.fields 是一个dict,其中字段的名称作为键,表单字段作为值。因此,迭代它会产生字符串。更改如下:

    for name, field in self.fields.items():
        # stuff with field.widget
    

    或者简单地说(如果 'stuff' 不涉及名称,就像您的 sn-p 中的情况一样):

    for field in self.fields.values():
        # stuff with field.widget
    

    【讨论】:

    • @brunodesthuilliers 是的,可能。我自己总是选择第一个,只是为了能够在需要时访问该名称。
    猜你喜欢
    • 2012-02-17
    • 2020-12-21
    • 2022-01-12
    • 2018-07-31
    • 1970-01-01
    • 2011-07-14
    • 2015-06-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多