【发布时间】:2014-10-23 22:09:16
【问题描述】:
第 1 步:
假设我有两个 one->many 相关的模型,例如:
from django.db import models
class Author(models.Model):
name = models.CharField(max_length=100)
class Book(models.Model):
name = models.CharField(max_length=300)
author = models.ForeignKey(Author)
pubdate = models.DateField()
如何获取所有作者的列表以及他们上一本书的名称(或者更确切地说是图书对象本身)?
- 每篇文章没有一个查询
- 有些作者可能还没有出版一本书,我仍然希望他们在列表中(没有)
- 为了可移植性,我想避免手动 SQL
- 它不应加载内存中的所有书籍
第 2 步:
我不确定解决方案是否存在显着差异。
假设现在我有 Book 的 PictureBook 子类(使用 django-polymorphic),并且我想知道所有作者最后一张 PictureBook 的 picture_url(如果不是,则再次为 None)。
from polymorphic import PolymorphicModel
class Book(PolymorphicModel):
name = models.CharField(max_length=300)
author = models.ForeignKey(Author)
pubdate = models.DateField()
class PictureBook(Book):
picture_url = models.CharField(max_length=200)
不幸的是,documentation about annotate 中的示例仅显示直接的最小值/最大值。如果我从所有图画书开始,那么我会想念那些没有图画书的作者。 This question 有点相关,但很老。我正在使用 Django 1.7。
【问题讨论】:
标签: django django-models