【问题标题】:Django QuerySet join across four tables, including ManyToMany?Django QuerySet 跨四个表连接,包括ManyToMany?
【发布时间】:2011-08-03 12:51:28
【问题描述】:

鉴于以下模型,我的目标是创建一个 QuerySet,它为给定的 PostCategory id 提取所有可用的 Tag 对象。我知道如何用 SQL 编写它,但不知道如何使用 Django ORM 来完成它。我相信我通过定义 Post 对象而不是 Tag 上的关系来遵循最佳实践,但 QuerySet 语法模式似乎希望我从 Tag.objects.filter() 开始,但我不知道如何。

class Tag(models.Model):
    name = models.CharField(max_length=255)

class PostCategory(models.Model):
    name = models.CharField(max_length=100)    

class Post(models.Model):
    body_text = models.TextField()
    pub_date = models.DateTimeField()
    mod_date = models.DateTimeField(auto_now=True)
    title = models.CharField(max_length=255)
    subtitle = models.CharField(max_length=255) 
    is_featured = models.BooleanField()
    image = models.ImageField(upload_to='post_images')
    tags = models.ManyToManyField(Tag, null=True, blank=True)
    user = models.ForeignKey(User)
    category = models.ForeignKey(PostCategory)

【问题讨论】:

    标签: django many-to-many django-queryset


    【解决方案1】:
    tags = Tag.objects.filter(post__category_id=postcategory_id).distinct()
    

    【讨论】:

    • 你打败了我,在我收到答案通知之前我就想通了 :) 谢谢!
    猜你喜欢
    • 1970-01-01
    • 2016-06-13
    • 2018-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-07
    • 2010-12-10
    • 2015-06-01
    相关资源
    最近更新 更多