如何在Django ModelForm中排序字段?
我有一个叫做“订单”的模型:
class Order(models.Model):
date_time=models.DateTimeField()
# other stuff
我正在使用Django的ModelForm类来生成一个表单,但我想把日期和时间的输入框分开显示。我想到了这个方法:
class Form(forms.ModelForm):
class Meta:
model = Order
exclude = ('date_time',)
date = forms.DateField()
time = forms.TimeField()
问题是我想把这些输入框放在“其他内容”的中间。
2 个回答
2
补充一下Lukasz的回答,在Django 2.0中,完整的管理表单注册和字段排序看起来会是这样的:
models.py
class Order(models.Model):
date_time = models.DateTimeField()
# other fields
admin.py
class OrderForm(forms.ModelForm):
datef = forms.DateField()
timef = forms.TimeField()
class Meta:
model = Order
exclude = ['date_time']
fields = (
'datef',
'timef',
# other fields
)
class OrderAdmin(admin.ModelAdmin):
form = OrderForm
admin.site.register(Order, OrderAdmin)
请注意,日期和时间字段是在ModelForm类中定义的,而不是在Meta类中。
69
你可以使用:
class Meta:
fields = [ ..., 'date', 'time', ... ]
查看文档:http://docs.djangoproject.com/en/dev/topics/forms/modelforms/#changing-the-order-of-fields