您可以实现以下方式中任一类中的方法:
注:我在这里的假设是,它是一个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()
提出的建议是针对整个查询集而不是单个项目执行计算。
UPDATE:澄清后该产品是不相关的人
在这种情况下,你可以使用该产品的情况下,你可以再简单地实现它作为
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)
产品和人之间的关系是什么? 1-1,1-M,M-M? – domino 2013-02-15 16:28:28
这取决于您是要计算任何模型的整个查询集的分数,还是计算任一模型实例的属性。 – Brandon 2013-02-15 16:36:11