如何从模型属性填充django管理表单?

时间:2016-10-31 10:46:45

标签: python django django-admin

我有模型,其中包含动态计算的price属性。我想在模型管理页面中显示此属性。所以我创建了自定义ModelForm:

class ShipmentForm(forms.ModelForm):
    price = forms.IntegerField()

    class Meta:
        model = models.Shipment
        fields = [
            'title',
            'price',
        ]

但是,我无法以该表格获得price价值。

以下是我在管理面板中更改表单的方法:

class ShipmentAdmin(admin.ModelAdmin):
    form = ShipmentForm

1 个答案:

答案 0 :(得分:2)

请参阅ModelAdmin.readonly_fields(Django 1.10 docs链接)。

  

只读字段不仅可以显示模型字段中的数据,还可以显示模型方法的输出或ModelAdmin类本身的方法。

这意味着您可以:

class ShipmentAdmin(admin.ModelAdmin):
    readonly_fields = ('price', 'something_else')

    def something_else(self, instance):
        # calculate something else here

price是模型方法,something_else是ModelAdmin方法。