Python 如何覆盖与相关字段相关的clean方法?
我的应用程序中有Python 如何覆盖与相关字段相关的clean方法?,python,django,django-models,django-forms,django-admin,Python,Django,Django Models,Django Forms,Django Admin,我的应用程序中有订单和发票型号订单具有属性已批准。当管理员在Django admin中设置approved=True时,会通知客户他们可以支付订单(Invoice) 问题是,发票具有属性最终价格,必须由管理员设置,管理员才能批准订单 在Django admin中,有发票对象内联到订单对象中。我想允许管理员设置final_price属性并立即设置approved订单 因此,我已经覆盖了Order的clean(self)方法 def clean(self): if self.approved
订单
和发票
型号<代码>订单具有属性已批准
。当管理员在Django admin中设置approved=True
时,会通知客户他们可以支付订单(Invoice
)
问题是,发票
具有属性最终价格
,必须由管理员设置,管理员才能批准订单
在Django admin中,有发票
对象内联到订单
对象中。我想允许管理员设置final_price
属性并立即设置approved
订单
因此,我已经覆盖了Order
的clean(self)
方法
def clean(self):
if self.approved and not self.invoice.final_price:
raise ValidationError(_("Invoice final price has to be set on approved order!"))
问题是,如果管理员立即设置Invoice.final_price
和Order.approved
,clean方法会引发ValidationError
,因为它不知道Invoice
即将更改
您对如何解决这个问题有什么建议吗?我认为您应该首先检查表单级别,即输入数据 您的
self.invoice.final_price
从数据库中检索尚未设置的最终_价格
一种方法是在其InlineFormSet本身中验证最终价格。另一种方法是
final_price = input_data.get('final_price')
if self.approved and not final_price:
# Raise an error
我认为您应该首先检查表单级别,即输入数据 您的
self.invoice.final_price
从数据库中检索尚未设置的最终_价格
一种方法是在其InlineFormSet本身中验证最终价格。另一种方法是
final_price = input_data.get('final_price')
if self.approved and not final_price:
# Raise an error