我想在rent_price
的{{1}}中自动填充计算值:
models.py
admin.py
admin.py
class Book(models.Model):
...
mrp = models.DecimalField(max_digits = 9, decimal_places = 2)
rent_price = models.DecimalField(max_digits = 9, decimal_places = 2)
...
答案 0 :(得分:0)
prepopulated_fields
class BookAdmin(admin.ModelAdmin):
...
def get_prepopulated_fields(self, request, obj=None):
prepopulated_fields = self.prepopulated_fields
if obj:
prepopulated_fields.update({
'rent_price': get_rent_price_from_mrp(obj.mrp)
})
return prepopulated_fields
答案 1 :(得分:0)
看一下pre_save信号(根据您对Muhammads答案的评论,这是您需要的。)
在管理员中创建图书时,在保存django之前,将调用图书模型的pre_save方法,并根据您在管理表单中提交的mrp计算rent_price。
如果表单提交的验证失败,或者以另一种方式处理验证,您可能必须更改租金模型,允许它为空。
这是一个关于信号的合适教程:http://www.koopman.me/2015/01/django-signals-example/,其中包含指向django文档的链接。
但要注意,批量方法不会触发信号。