[英]django model get field method
我有一个要求,当访问 django 模型Lead
Price
字段时,我必须应用一些业务逻辑并更新价格。
我可以在序列化程序/视图中完成。 然而,这个对象被多个视图访问,因此在多个地方有一个代码不是一个可行的设计。
所以我正在寻找一种可以像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
。
您可以使用类的属性方法。 这将通过对象访问。 您可以只在序列化程序中包含该字段。
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', )
我以一种非常不同的方式完成了这项任务,我不得不创建另一个称为 TrackLead Table 的表来跟踪何时进行了更改。
后来在__init__
函数中,我在需要时更新了价格字段。 我没有找到任何其他方法来完成它。 然而它现在工作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.