我有一个带有选择项的模型字段,如下所示:
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),但无济于事。
我在Model CharField上有一个类似的选择选择,并且没有这个问题。我不知道DecimalField有什么问题吗?
答案 0 :(得分:0)
您需要为模型创建一个表单,并设置初始值:
请参阅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