gpt4 book ai didi

python - Django 管理员。显示非模型字段

转载 作者:太空宇宙 更新时间:2023-11-03 18:09:43 24 4
gpt4 key购买 nike

是否可以在django admin中显示非模型字段?

例如,我有模型:

class TestModel(models.Model):
value = models.DecimalField(max_digits=5, decimal_places=2)

在 Django 管理中我想显示自定义字段“系数 1”、“系数 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 指定的未知字段 (....)

谢谢。

最佳答案

我不太确定你到底想要什么。但想必,如果在管理中不更改字段值,我想您只想在那里显示它,对吗?

在这种情况下,您可以在模型中定义一个方法,例如“name_language()”,然后通过 list_display 显示它:

list_display = ('field1', 'field2', 'name_language')

关于python - Django 管理员。显示非模型字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26222962/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com