如何在Django ModelForm中订购字段?

joo*_*zek 37 python sorting django-forms

我有'订单'型号:

class Order(models.Model):
     date_time=models.DateTimeField()
     # other stuff
Run Code Online (Sandbox Code Playgroud)

我正在使用Django ModelForm类来呈现表单,但我想分别显示日期和时间小部件.我想出了这个:

class Form(forms.ModelForm): 
    class Meta:
        model = Order
        exclude = ('date_time',)
        date = forms.DateField()
        time = forms.TimeField()
Run Code Online (Sandbox Code Playgroud)

问题是我想把这些字段放在"其他东西"之间

Luk*_*ski 62

您可以使用:

class Meta:
    fields = [ ..., 'date', 'time', ... ]
Run Code Online (Sandbox Code Playgroud)

请参阅文档:http://docs.djangoproject.com/en/dev/topics/forms/modelforms/#changing-the-order-of-fields

  • 这是正确的答案,而我只想提一下,fields = [...]可以包含用户定义的字段. (9认同)
  • 截至 Jan2021/Django 3.0,您链接到的文档没有“更改字段顺序”部分。如果我使用您给出的解决方案,Django 会抛出“ModelForm 没有指定模型类”错误。 (2认同)