获取最近“创建”的行(跨越表)

时间:2013-03-21 16:54:33

标签: python django

如果我有以下表格:

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的最新VasePotter(即这是我的问题的过度简化,我有两个表引用Potter

1 个答案:

答案 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]