0
我有以下2種型號:Django的模型查詢
class User(models.Model):
user_id = models.IntegerField(null=True)
name = models.CharField(max_length=50)
class Blog(models.Model):
id = models.IntegerField(primary_key=True)
user = models.ForeignKey(User, null=True)
timestamp = models.DateTimeField()
我如何寫一個Django模型查詢來獲取對象的列表,它具有以下的形成 -
[(user_object, number of blog posts of this user), ...]
此列表應該按降序排列。基本上,我想獲取關於用戶寫了多少博客文章的信息。
Incase,2個用戶擁有相同數量的博客帖子,我希望他們根據他們創建的博文的最新時間戳進行排序。
所以,我已經嘗試了以下方法,但仍然沒有成功。
user = User.objects.all()
serializer = UserSerializer(user, many=True)
user = list(serializer.data)
user_ranks = [(key, len(list(group))) for key, group in groupby(user)]
user_ranks = sorted(user_ranks, key=lambda x: x[1], reverse=True)
我不知道如何在timestamp
比較到上述代碼插入。另外,有沒有更好的方法來實現這一目標?
PS:如果你設置
user = models.ForeignKey(User, null=True, related_name='bloguser')
您可以使用
from django.db.models import Count
some_query = User.objects.filter(...).annotate(foobar = count('bloguser'))
附加博客的數目的條目User
號是相同Blog
如何應對'timestamp'一部分? –
https://stackoverflow.com/questions/844591/how-to-do-select-max-in-django – DisneylandSC
您還可以在用戶模型中記錄最新的博客文章。那麼你可以簡單地.orderby() – DisneylandSC