如果我有以下表格:
class Potter(models.Model):
name = models.CharField()
class Sculpture(models.Model):
potter = models.ForeignKey(Potter)
created = models.DateTimeField()
class Vase(models.Model):
potter = models.ForeignKey(Potter)
created = models.DateTimeField()
如何使用最少量的数据库命中找到某个Sculpture
的最新Vase
或Potter
(即这是我的问题的过度简化,我有两个表引用Potter
)?
答案 0 :(得分:2)
假设您有一个视图,您会收到一个陶工ID:
ordered_sculptures = Sculpture.objects.filter(potter=potter).order_by('-created')
ordered_vases = Vase.objects.filter(potter=potter).order_by('-created')
编辑:我可能误读了一些东西,所以如果你想使用查询集的最新版本,你可以只引用每个查询集的第一个元素(如果它们存在):
latest = ordered_sculptures[0]
同样适用于花瓶。
参考:django order_by in the docs
另一种方法,如果您为这些查询集定义了默认排序,则采用相反的方法:
latest = Sculpture.objects.filter(potter=potter).reverse()[0]