Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django动态表单&;字段排序_Django_Forms - Fatal编程技术网

Django动态表单&;字段排序

Django动态表单&;字段排序,django,forms,Django,Forms,我有一张表格,可以记录到一个部门 它是一个动态表单,根据表单类别/部门具有其他自定义字段 每张票证都有标准字段,如标题、日期、内容。一些有名为custom_acbdef的字段,该字段允许部门在表单上询问其他问题 这些额外的字段总是出现在表单的底部,目前还可以。(我添加了模型表单,然后通过其他字段循环并将它们添加到self.fields) 现在,我想添加一个名为“PDF附件”的额外标准字段,但我希望它始终显示在表单的底部。目前的问题是,所有标准字段都显示在顶部,而自定义字段则显示在底部 class

我有一张表格,可以记录到一个部门

它是一个动态表单,根据表单类别/部门具有其他自定义字段

每张票证都有标准字段,如标题、日期、内容。一些有名为custom_acbdef的字段,该字段允许部门在表单上询问其他问题

这些额外的字段总是出现在表单的底部,目前还可以。(我添加了模型表单,然后通过其他字段循环并将它们添加到self.fields)

现在,我想添加一个名为“PDF附件”的额外标准字段,但我希望它始终显示在表单的底部。目前的问题是,所有标准字段都显示在顶部,而自定义字段则显示在底部

class Meta:
    model = Ticket
    fields = ('ticket_category','ticket_branch','ticket_content', 'ticket_attachment1')

因此,在上面,我想在ticket\u内容和ticket\u附件之间插入所有自定义字段。你知道我该怎么做吗?所有自定义表单字段都有动态字段名,但始终以“custom_uu”开头。当我的表单中的内容开始变得不可管理时,我通常采用以下方法之一:

创建工厂 利用闭包,编写一个函数动态构建
字段
,然后返回该类

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
多种形式 我将根据用例创建几个不同的表单,然后在我的视图中确定应该返回哪个表单


为了进一步阅读,由James Bennett(django core dev)撰写的关于动态表单的文章。

我实际上是通过删除字段,然后在自定义字段循环后重新添加字段来实现的,但您的解决方案在我看来更好。太好了,谢谢