我有这两个模型:
class Product(models.Model):
category = models.ForeignKey('Category')
name = models.CharField(max_length=60, verbose_name=u'نام کالا')
price = models.PositiveIntegerField(verbose_name=u'قیمت')
image = models.ImageField(upload_to='products_images', verbose_name=u'عکس')
#score ???
def get_score(self):
pass
class Review(models.Model):
product = models.ForeignKey('Product')
rating = models.PositiveSmallIntegerField(max_length=1, verbose_name=u'امتیاز')
如何获得Product
被称为分数的派生属性,所以当我调用product.score
时,它调用get_score函数并返回从Review
模型计算的平均分数?
例如,如果某个产品有两个评分为4和2的评论,我希望product.score
返回3。
答案 0 :(得分:2)
如果您为方法score
命名,则可以使用属性:
@property
def score(self):
pass
这意味着product.score
将返回该方法的结果。然而,这一切都发生在Django的ORM之外,因此它不会被识别为模型中的字段。尽管如此,它可以在您的Python代码和模板中使用{{ product.score }}
。