复杂的Django查询外键

时间:2010-01-08 15:11:03

标签: python django django-orm

我在同一个应用程序中有两个模型。该应用程序称为“新闻”,它的模型中有两个类,称为“文章”和“类别”。

class Category(models.Model):
    name = models.CharField(_("Name"), max_length=100)
    slug = models.SlugField(_("Slug"), max_length=100, unique=True)

class Article(models.Model):
    category = models.ForeignKey(Category, verbose_name=_("Category"))
    archived = models.BooleanField(_("Archive this?"), default=False)

我想创建一个查询,向我显示所有已归档但按类别分组的文章。

我如何有效地完成这项工作?

3 个答案:

答案 0 :(得分:3)

Article.objects.filter(archived=True).order_by('category')

我正在编辑此内容以获取更多信息以尝试并提供帮助。

下式给出:

  • CAT1
    • ART1
    • ART2封存
    • ART3
  • CAT2
    • ART4
    • ART5
    • art6封存
  • CAT3
    • art7封存
    • art8封存
    • art9

您希望查询集包含什么?

答案 1 :(得分:3)

  
    
      

c = Category.objects.filter(article__archived = True)

    
  

答案 2 :(得分:2)

这不是你想要的吗?

class Article(models.Model):
    category = models.ForeignKey(Category, related_name='articles')
    archived = models.BooleanField(default=False)

categories = Category.objects.select_related("articles").filter(articles__archived=True)