我试图理解在django中生成泛型表单视图的过程。我有一个通用视图类
class BookUpdate(UpdateView):
model = Book
fields = [ 'name',
'pages',
'categorys'
]
从我的模型数据自动生成一个工作的html表单。但是现在,我想修改为categorys
显示的字段,有什么方法可以做到这一点,还是必须创建一个完整的工作BookForm
类和自定义BookUpdate
类?这里只有3个字段,但在我的实际例子中,可能有15个字段需要我自己编写代码,只是因为category
字段中有一个微小的变化。你知道吗
我不能用任何类方法覆盖单个字段吗?你知道吗
您不必自己对字段进行编码。但是有少量的工作要做,因为没有一个方法可以覆盖。你知道吗
您需要做的是定义一个自定义窗体。因为这将是一个ModelForm,所以它将使用相同的逻辑根据模型自动创建字段。然后可以覆盖其中一个的定义。你知道吗
现在告诉你的观点使用这种形式:
您可以在基于泛型类的视图中指定
fields
或form_class
。使用fields
,Django将使用modelform\u工厂来生成表单。没有什么可以定制的。你知道吗您应该创建一个
BookForm
类,以便可以自定义字段。在BookUpdate
视图中,只需删除fields
并添加form_class = BookForm
。在这里,我为categorys
自定义小部件并覆盖pages
的表单字段:请注意,您不必指定所有字段,您可以使用
"__all__"
来拥有所有字段,也可以将exclude = [<list fields to exclude>]
设置为仅排除一对字段。你知道吗相关问题 更多 >
编程相关推荐