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字段
访问