Python 如何使用“*”。objects.values();在Django
我有一个表名“Like”,列名为“value”。它包含两个值,或“相似”或“不相似”。如何使用Like.objects.values()获取仅包含“Like”的列值。我试过了Python 如何使用“*”。objects.values();在Django,python,django,django-models,django-queryset,Python,Django,Django Models,Django Queryset,我有一个表名“Like”,列名为“value”。它包含两个值,或“相似”或“不相似”。如何使用Like.objects.values()获取仅包含“Like”的列值。我试过了 query = Like.objects.values({'value': 'Like'}).order_by().annotate(Count('value')) 这是投掷 AttributeError: 'dict' object has no attribute 'split' 目标是按降序获得喜欢的数量。如果我
query = Like.objects.values({'value': 'Like'}).order_by().annotate(Count('value'))
这是投掷
AttributeError: 'dict' object has no attribute 'split'
目标是按降序获得喜欢的数量。如果我使用object.values()获取它,我可以执行如下操作进行排序
sorted_dec = sorted(query, key=lambda x:x['value'], reverse=True)[0:5]
还是有更好的逻辑来处理这个问题
models.py:
class Post(models.Model):
title = models.CharField(max_length=100)
content = RichTextField(blank=False, null=True, validators=[MinLengthValidator(200)])
liked = models.ManyToManyField(User, default=None, blank=True, related_name = 'liked')
date_posted = models.DateTimeField(default=timezone.now)
author = models.ForeignKey(User, on_delete=models.CASCADE, related_name = 'author')
def __str__(self):
return self.title
@property
def num_likes(self):
return self.liked.all().count()
def get_absolute_url(self):
return reverse('post-detail', kwargs={'pk': self.pk})
LIKE_CHOICES = (
('Like', 'Like'),
('Unlike', 'Unlike'),
)
class Like(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
post = models.ForeignKey(Post, on_delete=models.CASCADE)
value = models.CharField(choices= LIKE_CHOICES,default='Like', max_length=10)
def __str__(self):
return str(self.post)
下面的查询将为您提供包含字典的查询集
query = Like.objects.filter(value='Like').values()
下面的查询将为您提供包含字典的查询集
query = Like.objects.filter(value='Like').values()
你能分享你的模型吗?“目标是按降序获得喜欢的数量”-喜欢的数量按什么分组?请查看编辑您想要一个
Post
queryset,该查询集用相关Like
对象的数量进行注释和排序?您能分享您的模型吗?“目标是按降序获得喜欢的数量”-喜欢的数量按什么分组?请参阅编辑您想要一个Post
queryset,该查询集用相关Like
对象的数量进行注释和排序?