我有两个模型:
class Review(models.Model):
artist = models.CharField(max_length=100)
album = models.CharField(max_length=200)
rating = models.IntegerField(
validators=[MinValueValidator(0), MaxValueValidator(10)],
default=10,
)
content = models.TextField(null=True, blank=True)
updated = models.DateTimeField(auto_now=True)
created = models.DateTimeField(default=timezone.now)
author = models.ForeignKey(User, on_delete=models.SET_NULL, null=True)
...
class AddedReview(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
review = models.ForeignKey(Review, on_delete=models.CASCADE)
rating = models.IntegerField(default=10)
body = models.TextField()
updated = models.DateTimeField(auto_now=True)
created = models.DateTimeField(default=timezone.now)
...
Review
模型是用户发布的初始评论。AddedReview
模型是用户可以在初始Review
上发布的额外评论。初始Review
将由原始用户添加rating
,其他用户将添加额外的rating
。我希望能够将这两个模型中的所有rating
聚合到avg_rating
字段中,以便在Review
模型中使用。
我知道如何在Python shell中执行此操作,但我不太了解如何创建模型方法来执行此操作。
1条答案
按热度按时间ldxq2e6h1#
看看这个
阅读更多关于一对多关系的信息。当您有一个
Review
托管多个AddedReview
时,您可以说:一个Review
有一组AddedReview
s。这将引导你到django的反向查找功能。在链接的网站上搜索“_set”,你会发现更多的例子。因为你没有告诉你想在哪里使用这个功能,我将展示一个基本的视图:
让我知道如果这对你有用!