0

django-categories我有一个应用程序,使用该应用程序,使用硬链接(ForeignKey to )将帖子分成不同的类别categories.Category

我还使用该django-voting应用程序来允许用户对某些帖子进行投票或投票。

现在我有一个视图,我需要Categories用户未投票且不是他自己的帖子的(用户类别白名单)列表中的最新帖子。从数据库查询负载的角度来看,我如何以最有效的方式获取这些帖子。

这是我的帖子模型:

class Post(models.Model):
    published = models.DateTimeField(default=datetime.now)
    author = models.ForeignKey(User, blank=True, null=True,
                               verbose_name='author', 
                               related_name='author_post')
    caption = models.CharField(max_length="240")
    image = models.ImageField(upload_to='user_images')
    up_votes = models.PositiveIntegerField(default=0)
    down_votes = models.PositiveIntegerField(default=0)
    category = models.ForeignKey('categories.Category')

我是否应该使用 RAW DB 查询以反向时间顺序获取当前登录用户未投票且不是他自己的帖子的帖子。

4

1 回答 1

1

取决于你的数据库。如果是PosgtreSQL,那么您可以使用子查询。

voted_already = (Vote.objects.filter(user=…, 
                                     content_type=…)
                             .values_list('object_id', flat=True))
not_voted = (Post.objects.filter(category__in=…)
                         .exclude(author=…, 
                                  pk__in=voted_already)
                         .order_by('-published'))
于 2013-02-05T09:24:44.773 回答