【发布时间】:2023-04-24 23:12:01
【问题描述】:
django admin 中是否可以显示非模型字段?
例如,我有模型:
class TestModel(models.Model):
value = models.DecimalField(max_digits=5, decimal_places=2)
在 Django admin 中,我想显示自定义字段 “coefficient 1”,“coefficient 2”不是模型字段,所以我不想将其值保留在数据库中。该系数将用于计算模型的“值”字段。
系数是使用某种算法生成的。 (例如,我们有模型 CoefficientGenerator 来保留其名称和值)。
这个字段是动态生成的,所以我不能在模型体中声明它。但用户必须有 可以在使用 django admin 保存实例之前编辑系数。
我试图覆盖 ModelAdmin 中的 get_fieldsets 方法:
class TestModelAdmin(ModelAdmin):
def get_fieldsets(self, request, obj=None):
fieldsets = super(ProductAdmin, self).get_fieldsets(request, obj)
for c in CoefficientGenerator.objects.all():
fieldsets[0][1]['fields'].append(c.name)
return fieldsets
并且还要在我的自定义管理表单中覆盖 init:
def __init__():
...
for c in CoefficientGenerator.objects.all():
field = forms.CharField(required=False, widget=forms.Textarea, label=c.name)
self.fields[c.name] = field
但这对我不起作用。我得到了错误: 为 TestModel 指定的未知字段 (....)
谢谢。
【问题讨论】:
标签: python django django-admin