首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在某些类别中查找您尚未投票的帖子(django-投票,django-类别)

在某些类别中查找您尚未投票的帖子(django-投票,django-类别)
EN

Stack Overflow用户
提问于 2013-02-05 14:56:40
回答 1查看 75关注 0票数 0

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

我还使用django-voting应用程序来允许用户vote_up或vote_down某些帖子。

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

这是我的Post模型:

代码语言:javascript
复制
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')

我是否应该使用原始数据库查询来以反时间顺序获取帖子,其中当前登录的用户没有投票,并且这些帖子不是他自己的帖子。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-02-05 17:24:45

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

代码语言:javascript
复制
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'))
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14701802

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档