【问题标题】:Order queryset by JSON field of latest FK按最新 FK 的 JSON 字段排序查询集
【发布时间】:2021-03-01 20:33:42
【问题描述】:

我有这样的模型:

class Configuration(models.Model):
    @property
    def latest_value_A(self):
        return self.result_set.latest("created_time").data.get("value_A")

class Result(models.Model):
    data = models.JSONField()  # "value_A" key is present in JSON
    configuration = models.ForeignKey(Configuration, on_delete=models.CASCADE)
    created_time = models.DateTimeField()

我想做类似Configuration.objects.order_by("latest_value_A") 的事情,这显然失败了,因为它只是一个属性,而不是存储在数据库中。但是正确的做法是什么?

更新:我正在使用 PostgreSQL

【问题讨论】:

  • 你使用 PostgreSQL 数据库吗?
  • 是的,我用的是 PostgreSQL

标签: python django


【解决方案1】:

您可以使用 python 中的 sorted 函数。比如:

sorted(Configuration.objects.all(), key=lambda t: t.latest_value_A)

如有需要,请提供参考: Ordering Django queryset by a @property

【讨论】:

  • 不错的解决方案!轻松解决了我的问题,我想知道它的效率。
猜你喜欢
  • 1970-01-01
  • 2020-08-16
  • 2010-12-11
  • 2011-05-08
  • 1970-01-01
  • 2015-08-31
  • 2019-01-13
  • 2012-07-08
  • 2012-12-20
相关资源
最近更新 更多