这是我的模型和视图文件。
class Article(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
author = models.ForeignKey(User, on_delete=models.CASCADE, related_name='articles')
caption = models.CharField(max_length=250)
@property
def average_rating(self):
return self.articlecomments.all().aggregate(Avg('rate')).get('rate__avg', 0.00)
class ArticleComment(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
article = models.ForeignKey(Article, on_delete=models.CASCADE, null=True, blank=True, related_name='articleratings')
author = models.ForeignKey(User, on_delete=models.CASCADE, null=True, blank=True, related_name='articleratings_author')
rate = models.IntegerField(default='0')
个字符
我试图做的是排序的文章,其评级,但它不工作。它给了我这个错误:
raise FieldError("Cannot resolve keyword '%s' into field. "
django.core.exceptions.FieldError: Cannot resolve keyword 'average_rating' into field. Choices are:......
型
我把它作为一个财产。我该如何解决这个问题?有其他方法吗?
1条答案
按热度按时间y0u0uwnf1#
不能按属性排序,因为数据库中不存在此字段。
首先注解此字段,然后使用
order_by
。试试这个:
字符串
编辑:添加逻辑以返回0值作为默认值