我有一个要求,当访问django模型Price
中的字段Lead
时,我必须应用一些业务逻辑并更新价格。
我可以在Serializers / Views中完成。但是,这个对象可以通过多个视图访问,因此在几个地方都没有可行的设计。
所以我正在寻找一种可以像get_price(self)
那样获得控制权的方式。
class Lead(models.Model):
price = models.IntegerField(_('price'), default=10)
def get_price(self):
''' Looking for something like this '''
.. Logic ...
return self.price
当任何序列化程序/视图访问此模型时,将调用 get_price
。访问此模型时,问题是get_price
未被调用。
答案 0 :(得分:2)
您可以使用该类的属性方法。哪个将通过对象访问。您可以在序列化程序中包含这些字段。
class Lead(models.Model):
price = models.IntegerField(_('price'), default=10)
@property
def total_price(self):
''' Looking for something like this '''
.. Logic ...
return self.price
现在您可以在序列化程序中包含total_prcie字段。
class LeadSerializer(serializers.ModelSerializer):
class Meta:
model = Lead
fields = ('total_prize', )
答案 1 :(得分:0)
我以一种非常不同的方式完成了这项任务,我不得不创建另一个名为TrackLead Table的表来跟踪所做的更改。
稍后在__init__
函数中,我在需要时更新了价格字段。我没有找到任何其他方法来完成它。然而它现在正在工作。