2016-10-31 83 views
0

我有模型,其中包含其他字段price動態計算的屬性。我想在模型管理頁面中顯示此屬性。所以我創建定製的ModelForm:如何從模型屬性填充django管理員表單?

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

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

但是我不能讓在形式price值。

下面是如何改變形式的管理面板:

class ShipmentAdmin(admin.ModelAdmin): 
    form = ShipmentForm 
+0

這是值得更新這個問題的標題,以反映它是關於Django管理員,而不是面向公衆的形式。 – nimasmi

回答

1

ModelAdmin.readonly_fields(Django的1.10文檔的鏈接)。

只讀字段不僅可以顯示模型字段中的數據,還可以顯示模型方法的輸出或ModelAdmin類本身的方法。

這意味着,你可以這樣做:

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

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

price是一個模型的方法,並something_else是的ModelAdmin方法。

+0

也不需要該方法; readonly_fields,如list_display,可以直接使用模型屬性。 –

+0

謝謝,更新。 – nimasmi