Django 查询,注释最新的子值



是否可以注释最后一个孩子的值?有模型StoreItem,它与模型运动有很多关系:

StoreItem.objects.last().movements.last().total_count # => 32

我需要这样的东西:

StoreItem.objects.annotate(total_count_of_last_movement=...??...)

谢谢!

鉴于您的最后一条评论,您无需聚合。

假设您的模型如下所示:

class Movement(models.Model):
    ...
    store_item = models.ForeignKey(StoreItem, ..., related_name='movements')
    total_count = models.IntegerField(...)
class StoreItem(models.Model):
    ...
    title = models.TextField(...)

您只需向StoreItem模型添加一个属性:

class StoreItem(models.Model):
    ...
    title = models.TextField(...)
    @property
    def last_movement_total_count(self):
        if self.movements is not None and self.movements.count() > 0:
            return self.movements.last().total_count
        return None # or -1 or something that tells that there are no movements

这样你可以做到:

store_item = StoreItem.objects.last() # or get or whatever you need
last_movement_total_count = store_item.last_movement_total_count

希望这有帮助。

我不

完全理解你的问题,但这是我的建议:

由于您想要StoreItem集,您可以尝试:

last_movement_total_count = StoreItem.objects.last().movements.last().total_count

然后:

store_items_with_count = StoreItem.objects.filter(movement__total_count=last_movement_total_count)

在这里,store_items_with_count 保存至少一个movementtotal_count值为 last_movement_total_count 的所有StoreItems,则

store_items_with_count.last() # the last StoreItem

但是,如果你想要最后一个乐章的StoreItem,它更简单:

last_store_item = Movement.objects.last().store_item

希望这有帮助,如果没有,请指定您的型号以及您希望在最后获得什么。

相关内容

  • 没有找到相关文章

最新更新