【问题标题】:How to use Q objcts in annotate tortoise如何在 annotate tortoise 中使用 Q 对象
【发布时间】:2022-12-29 08:18:14
【问题描述】:

所以简单地说我有我的模型公告,用户,最喜欢的公告

class FavoriteAnnouncement(CoreModel):
    user = fields.ForeignKeyField('models.User', related_name='favorites')
    announcement = fields.ForeignKeyField(
        'models.Announcement',
        related_name='favorites'
    )

我想添加一个带注释的字段 is_user_fav : Optional[bool]

我在 django 中找到了解决方案 (

queryset = queryset.annotate(is_user_fav=ExpressionWrapper(
            Q(...),
            output_field=BooleanField(),
        ),)

)

我怎样才能在 Tortoise ORM 中做类似的事情?

【问题讨论】:

    标签: python django pydantic tortoise-orm


    【解决方案1】:

    您可以使用 CASE 语句代替 Q 表达式。这是一个示例,可为您提供所需的布尔结果:

    from tortoise.expressions import Case, When
    
    queryset = queryset.annotate(is_user_fav=Case(
        When(..., then=True),
        default=False
    ))
    

    您可以将 WhenQ 基本相同,它还允许您指定满足该条件时的值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-05-30
      • 2017-09-16
      • 2015-05-13
      • 2015-06-05
      • 1970-01-01
      • 2023-01-25
      • 2014-07-30
      • 2019-11-17
      相关资源
      最近更新 更多