如何在 Django 中使用“*.objects.values()”
How to use "*.objects.values()" in Django
我有一个 table 名称“Like”和名为“value”的列。它包含两个值,“Like”或“Unlike”。如何使用 Like.objects.values() 获取仅包含“Like”的列值。我试过了,
query = Like.objects.values({'value': 'Like'}).order_by().annotate(Count('value'))
正在投掷,
AttributeError: 'dict' object has no attribute 'split'
objective是按降序获取点赞数。如果我使用 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()
我有一个 table 名称“Like”和名为“value”的列。它包含两个值,“Like”或“Unlike”。如何使用 Like.objects.values() 获取仅包含“Like”的列值。我试过了,
query = Like.objects.values({'value': 'Like'}).order_by().annotate(Count('value'))
正在投掷,
AttributeError: 'dict' object has no attribute 'split'
objective是按降序获取点赞数。如果我使用 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()