Python 调整django通用编辑视图生成的表单
我试图理解在django中生成通用表单视图的过程。我有一个只有Python 调整django通用编辑视图生成的表单,python,django,forms,django-models,Python,Django,Forms,Django Models,我试图理解在django中生成通用表单视图的过程。我有一个只有 class BookUpdate(UpdateView): model = Book fields = [ 'name', 'pages', 'categorys' ] 它会根据我的模型数据自动生成一个工作html表单。但是现在,我想修改为类别显示的字段,是否有任何方法可以做到这一点,或者我必须创建一个完整的工作图书表
class BookUpdate(UpdateView):
model = Book
fields = [ 'name',
'pages',
'categorys'
]
它会根据我的模型数据自动生成一个工作html表单。但是现在,我想修改为类别显示的字段,是否有任何方法可以做到这一点,或者我必须创建一个完整的工作图书表单
类和自定义图书更新
类?这里只有3个字段,但在我的实际案例中,可能有15个字段需要我自己编码,这只是因为类别
字段中有一个微小的变化
我不能使用任何类方法覆盖单个字段吗?您可以在基于类的通用视图中指定字段
或表单类
。对于字段
,Django将使用modelform_工厂生成表单。那你就没有什么可以定制的了
您应该创建一个BookForm
类,以便自定义字段。在BookUpdate
视图中,只需删除字段
并添加form\u class=BookForm
。这里,我正在为类别
定制小部件,并覆盖页面
的表单字段:
def BookUpdate(UpdateView):
model = Book
form_class = BookForm
def BookForm(ModelForm):
pages = MyCustomPagesField()
class Meta:
model = Book
fields = '__all__'
widgets = {'categorys': MyCustomWidget()}
请注意,您不必指定所有字段,您可以使用“\uuuu all\uuuu”
来指定所有字段,也可以设置exclude=[]
来仅排除一对字段 您不必自己编写字段代码。但是有一小部分工作要做,因为没有一个方法可以覆盖
您需要做的是定义一个自定义表单。因为这将是一个模型表单,所以它将使用相同的逻辑根据模型自动创建其字段。然后可以覆盖其中一个的定义
class BookForm(forms.ModelForm):
categorys = forms.ModelMultipleChoiceField(custom_attributes_here...)
class Meta:
model = Book
fields = ["name", "pages", "categorys"]
现在告诉您的视图使用该表单:
class BookUpdate(UpdateView):
form_class = BookForm