我有一张表格,可以将“门票”记录到某个部门。
这是一个动态表单,根据表单类别/部门有其他自定义字段。
每张票都有标准字段,例如标题,日期,内容。有些字段名为custom_acbdef,允许部门在表单上提出其他问题。
这些附加字段始终显示在表单的底部,此刻可以正常显示。 (我添加模型表单然后循环通过其他字段并将它们添加到self.fields)
现在,我想添加一个名为“PDF附件”的附加标准字段,但我希望它始终显示在表单的底部。目前的问题是所有标准字段都显示在顶部,自定义字段显示在底部。
class Meta:
model = Ticket
fields = ('ticket_category','ticket_branch','ticket_content', 'ticket_attachment1')
所以在上面,我希望所有人都在ticket_content和ticket_attachment之间插入我的所有自定义字段。我有什么想法可以做到这一点?所有自定义表单字段都具有动态字段名称,但始终以“custom_”
开头答案 0 :(得分:1)
当我的表单__init__
中的内容开始变得无法管理时,我通常采用以下方法之一:
利用闭包,编写一个函数来动态构建fields
,然后返回该类。
def TicketForm():
fields = ['title', 'date', 'content']
for custom_field in custom_fields:
fields.append(custom_field)
fields.append('ticket_content')
fields.append('ticket_attachment1')
class _TicketForm(forms.ModelForm):
class Meta:
model = Ticket
fields = fields
return _TicketForm
我将根据用例创建几种不同的表单,然后在我的视图中确定应该返回哪一种。 I posted an example of this yesterday.
进一步阅读James Bennett(django core dev)关于动态表格的check out a post。