您可以通过以下方式在任一类中实现该方法:
注意:我的假设是这是一个 1-M 关系:
class Product(models.Model):
person = ForeignKey(Person)
...
def get_score(self):
# do your thing here
# use a person reference
if self.person:
# calculate score in one way
else:
# calculate score some other way
return score
或者你可以在Person
课堂上实现它。这完全取决于您是想从人的角度还是从产品的角度工作
您提出的建议Product.objects.get_score()
是在您对整个查询集而不是单个项目执行计算时。
更新:在澄清产品与人无关后
在这种情况下,您可以简单地将其实现为
class Product(models.Model):
...
def get_score(self, person):
# check the conditions you need to calculate the score
if person.has_some_property and self.has_some_product_property:
# calculate score in one way
else:
# calculate score some other way
return score
使用产品实例,您可以简单地执行以下操作:
person = Person.objects.get(pk=<some_id>)
product = Product.objects.get(pk=<some_id>)
product.get_score(person)