我有一个带有选择的模型字段,定义如下:
class Pack(models.Model):
SIZE_10x20 = Decimal(200.000)
SIZE_10x10 = Decimal(100.000)
SIZE_5x10 = Decimal(50.000)
size_code_choices = (
(SIZE_5x10, '5x10'),
(SIZE_10x10, '10x10'),
(SIZE_10x20, '10x20'),
)
size_code = models.DecimalField(max_digits=7,
decimal_places=3,
choices=size_code_choices,
default=SIZE_10x20)
我的 admin.py 使用默认形式:
class PackAdmin(admin.ModelAdmin):
list_display = ('size_code')
fields = ('size_code')
admin.site.register(Pack, PackAdmin)
但是,当我打开我的管理面板并检查模型实例更改时,下拉菜单没有预先设置为存储在数据库中的选项。我附上了两张图片来证明我的意思:
List display for all model instances
它只是选择列表顶部的那个。我希望用户能够对模型进行小的更改,而不必在每次使用此表单时总是检查和重置此字段。
我研究过覆盖 ModelAdmin.get_changeform_initial_data(request) 但无济于事。
我在模型 CharField 上有一个类似的选择,但没有这个问题。 DecimalField 是否发生了我不知道的事情?
请您参考如下方法:
您需要为您的模型创建一个表单,设置初始值:
参见 https://docs.djangoproject.com/en/2.1/ref/forms/fields/#initial
然后在您的管理员中替换表单:
参见 https://docs.djangoproject.com/en/2.1/ref/contrib/admin/#django.contrib.admin.ModelAdmin.form
