我有一个模特:
class List:
data = ...
previous = models.ForeignKey('List', related_name='r1')
obj = models.ForeignKey('Obj', related_name='nodes')
这是一个方向列表,包含对Obj类的一些obj的引用。我可以通过以下方式反转关系并得到一些列表的所有元素引用obj:
obj.nodes
但是如何才能获得最后一个节点?不使用原始sql,可以像django那样简单地进行SQL查询。
答案 0 :(得分:4)
obj.nodes
是一个RelatedManager,而不是一个列表。与任何经理一样,您可以通过
obj.nodes.all().reverse()[0]
无论如何,只有在Node的Meta类上定义了任何默认顺序时才有意义,因为否则“反向”的语义没有任何意义。如果您没有任何指定的订单,请明确设置:
obj.nodes.order_by('-pk')[0]
答案 1 :(得分:1)
len(obj.nodes)-1
应该为您提供列表中最后一个元素(从0开始计算)的索引
类似
obj.nodes[len(obj.nodes)-1]
应该给出列表的最后一个元素 我不确定这对你的情况有好处,试一试:)
答案 2 :(得分:1)
我看到这个问题已经很老了,但是在较新版本的Django中,现在查询集上有first()和last()方法。
答案 3 :(得分:0)
好吧,你可以使用[-1]索引,它将返回列表中的最后一个元素。也许这个问题与你的问题很接近: