如何制作过滤器以便为每个用户分配两个条目?

时间:2014-02-26 14:57:57

标签: django django-models

我有模特:

class MyModel(models.Model):
    user = models.ForeignKey(user)
    data = models.IntegerField()
    created = models.DateTimeField(default=datetime.now)
    [...]

如何制作一个过滤器,以便每个用户有10个条目的结果,然后按“用户”排序?

示例:

显示页面“users entries”,其中是每个用户的两个最新条目。

1 个答案:

答案 0 :(得分:1)

我是django newbe,但最近我遇到了类似的问题。 也许它会为你做到。

我的用户基于django用户模型和带有字段所有者的电影。我希望显示每个用户的最后2部电影,按用户分组并按电影发布日期排序。

我做了什么,是:

  • 创建并添加方法到用户模型(它返回2个用户电影的列表):

    from django.contrib import auth
    
    def get_users_last_movies(self):
        movies = Movies.objects.filter(state=3,
                 pubdate__lte=datetime.now(), 
                 owner=self).order_by('-pubdate')[0:2]
        return movies
    
    auth.models.User.add_to_class('get_users_last_movies', get_users_last_movies)
    
  • 在视图文件中选择您感兴趣的所有用户并将他们的电影附加到他们,在创建的用户列表上使用排序方法

    dusers = User.objects.filter(is_active=True)
    users = []
    for duser in dusers:
        duser.movies = duser.get_users_last_movies()
        users.append(duser)
    users.sort(key=lambda x: x.movies[0].pubdate, reverse=True)
    data['dusers'] = users
    

希望此代码能让您顺利进行