了解 django 表单初始化



我有一个这样的类:

class EmailForm(forms.Form):
    users = forms.MultipleChoiceField(required=False, widget=MultipleHiddenInput())
    subject = forms.CharField(max_length=100)
    message = forms.Textarea()
    def __init__(self, users, *args, **kwargs):
        super(EmailForm, self).__init__(*args, **kwargs)
        self.users.choices = users
        # self.fields['users'].choices = []

如果我使用它而不是self.users,底部的注释行效果很好。

我是否正确认为userssubjectmessage是类级别的,这就是为什么它们被从属性列表中弹出的原因?

那么,如果我想以某种方式更改属性,每个对象的副本self.fields

谢谢。

窗体类使用 DeclarativeFieldsMetaclass ,它启用字段的声明性语法。

该实现意味着表单类和实例实际上没有每个字段的属性self.field_name。这就是为什么尝试使用self.users会出错的原因。

表单实例的字段可以作为 self.fields 进行访问,这是在 __init__ 方法中调用 super 时创建的。

表单类的字段可以按self.base_fields访问。

最新更新