这是我的模型和视图文件.
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')
class ArticleByCategoryViewSet(viewsets.ModelViewSet):
permission_classes = (IsAuthenticated,)
queryset = Article.objects.all().order_by('-average_rating')
serializer_class = ArticleSerializer
pagination_class = StandardResultsSetPagination
我试图做的是根据文章的评级对文章进行排序,但这不起作用.它给了我这个错误:
raise FieldError("Cannot resolve keyword '%s' into field. "
django.core.exceptions.FieldError: Cannot resolve keyword 'average_rating' into field. Choices are:......
我把它当做财产.我怎么才能解决这个问题呢?有没有其他办法?