Python 理解django表单初始化

Python 理解django表单初始化,python,django,forms,init,Python,Django,Forms,Init,我有一门课是这样的: 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):

我有一门课是这样的:

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
,则该行非常有效

我认为
用户
主题
消息
是类级别的,这就是它们从属性列表中弹出的原因,对吗

因此,
self.fields
是属性的每个对象副本,以防我想以某种方式更改它们

谢谢。

Form类使用,它为字段启用声明性语法

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

表单实例的字段可以作为
self.fields
访问,这是在
\uuuuu init\uuuu
方法中调用
super
时创建的

表单类的字段可以作为
self.base\u字段
访问