Сложный запрос Django по внешним ключам - PullRequest
2 голосов
/ 08 января 2010

У меня две модели в одном приложении. Приложение называется «Новости», и в его модели есть два класса: «Статья» и «Категория».

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 ]

3 голосов
/ 14 января 2010

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

3 голосов
/ 08 января 2010
Article.objects.filter(archived=True).order_by('category')

Я редактирую это, чтобы получить больше информации, чтобы попытаться помочь.

дано:

  • cat1
    • art1
    • art2-архив
    • art3
  • cat2
    • art4
    • art5
    • art6-archived
  • cat3
    • art7-archived
    • art8-archived
    • art9

что бы вы хотели, чтобы ваш набор запросов содержал?

2 голосов
/ 08 января 2010

Разве это не то, что вы хотите?

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)
...