Python Django模型查询

Python Django模型查询,python,django,model,django-rest-framework,Python,Django,Model,Django Rest Framework,我有以下两种型号: 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) ti

我有以下两种型号:

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), ...]
这个列表应该是按降序排列的。基本上,我想获得关于一个用户写了多少篇博客文章的信息

在这种情况下,两个用户有相同数量的博客文章,我希望他们被排序的基础上,最新的时间戳的博客文章创建他们

到目前为止,我已经尝试了以下方法,但仍然没有成功

    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)
我不知道如何将时间戳比较插入到上述代码中。还有,有没有更好的方法来实现这一点

注意:如果您设置,则用户中的条目数与博客中的条目数相同

user = models.ForeignKey(User, null=True, related_name='bloguser')
你可以用

from django.db.models import Count
some_query = User.objects.filter( ... ).annotate( foobar = count('bloguser') )
附加博客的数量,然后可以通过某个_query.foobar在模板中访问这些博客

时间戳

some_query = User.objects.filter( ... ).annotate( foobar = count('bloguser') ).annotate( foomax = Max('bloguser__timestamp') )

如何处理时间戳部分?您还可以在用户模型中记录最新的博客文章。那么你可以简单地说。orderby你能在上面的答案中包括你的完整解决方案吗?谢谢