【问题标题】:Specify sql expression as column name in a django orm query将 sql 表达式指定为 django orm 查询中的列名
【发布时间】:2017-09-24 07:53:33
【问题描述】:

看看这个查询:

select 'DEFAULT_STRING' as category from foo

这里,我们在表中并没有真正的列category,但我们只是使用字符串文字来表示查询返回的所有行中的该列值。代替字符串文字,我们可以在上面使用任何有效的 SQL 表达式。有没有办法在 django ORM 中进行此查询?

【问题讨论】:

    标签: python mysql django django-orm


    【解决方案1】:

    一个方便的方法是使用annotate 和RawSQL 查询表达式。

    from django.db.models.expressions import RawSQL
    qset = Foo.objects.annotate(category=RawSQL("select 'DEFAULT_CATEGORY'", ()))
    

    如果有更好的方法,请在答案中告诉我。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-01-19
      • 2016-04-20
      • 2020-09-12
      • 1970-01-01
      • 2013-09-26
      • 2019-10-17
      • 2022-08-18
      相关资源
      最近更新 更多