2017-10-27 21 views
0

models.pyに計算された値が必要です。以下はファイルmodels.pyです。私はpriceを期待通りに得ることができますが、priceはフィールドの1つとして表示されません。つまり、delivery_pricesupport_priceと入力すると、priceフィールドが計算され、下のページ自体(添付画像)に表示されます。これが可能か、何か間違っていますか?Djangoのモデルで計算された値が必要

delivery_price = models.DecimalField(max_digits=10, decimal_places=0,default=0) 
support_price = models.DecimalField(max_digits=10, decimal_places=0,default=0) 

#def get_price(self): 
# "Returns the price." 
# return (self.delivery_price + self.support_price) 
#price = property(get_price) 

price = models.DecimalField(max_digits=10, decimal_places=0,editable=False) 

def save(self, *args, **kwargs): 
    self.price = self.delivery_price + self.support_price 
    super(Product, self).save(*args, **kwargs) 

enter image description here

+0

非正規化の理由は何ですか? 'property'の代わりに、パフォーマンスがあなたに関するものなら' cached_property'を使うこともできます。 – cezar

+0

私は 'decimal_places = 0'で' DecimalField'を持っているという点も得られません。 – cezar

答えて

2

= Falseを編集可能なフィールドは、Djangoの管理者には表示されませんを意味します。あなたのadmin.py ModelAdminの代わりに、それを読み取り専用フィールドにしてください。

class MyModelAdmin(admin.ModelAdmin): 
    model = MyModel 
    readonly_fields = ('price',) 

admin.site.register(MyModel, MyModelAdmin) 
+0

ModelAdminはadmin.pyになりますか? –

+0

@HeenashreeKhandelwal right!上記のコードは 'admin.py'に入れてください。 – cezar

+0

しかし、それは自動的に価格の値を入力するつもりですか? 'price'で計算された値を取得していません –

関連する問題