很好奇,为什么我不能检索自己的Django Form类的属性?

时间:2018-08-05 09:49:04

标签: django python-3.x

在Django项目shell(Python 3.5 + Django 1.11)中,我尝试了以下语句:

<vector xmlns:android="http://schemas.android.com/apk/res/android"
        android:width="24dp"
        android:height="24dp"
        android:viewportWidth="24.0"
        android:viewportHeight="24.0">
    <path
        android:fillColor="#f19b06"
        android:pathData="M12,4l-1.41,1.41L16.17,11H4v2h12.17l-5.58,5.59L12,20l8,-8z"/>
</vector>

但是我不能获取我的from django import forms class ContactForm(forms.Form): subject = forms.CharField() email = forms.EmailField(required=False) message = forms.CharField() print( ContactForm.subject ) 属性。我收到错误消息:

ContactForm.subject

为什么会这样?是由某种隐藏的Python语言技巧引起的吗?

enter image description here

1 个答案:

答案 0 :(得分:3)

是的,表单具有特殊的元类,可将定义的字段提升到form.base_fields中。

因此,如果您需要访问该字段,可以执行ContactForm.base_fields['subject'],但要注意,对该字段的修改将在请求中保留

如果您只需要为单个请求修改表单字段,请覆盖表单的__init__,然后在self.fields中修改表单字段(注意: not {{ 1}}),是在base_fields中创建的类.base_fields的深层副本。

例如,如果您需要为每个用户做某事-将其放入代码中,

Form.__init__