django 如何使用Q对象标注Tortoise

0h4hbjxa  于 2022-12-30  发布在  Go
关注(0)|答案(1)|浏览(203)

简单来说我有我的模型公告用户收藏公告

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

我想添加一个注解字段is_user_fav:可选[bool]
我在django找到了解决办法(

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


我怎么能在TortoiseORM中做类似的事情?

rqqzpn5f

rqqzpn5f1#

你可以用CASE语句代替Q表达式,下面的例子给出了你想要的布尔结果:

from tortoise.expressions import Case, When

queryset = queryset.annotate(is_user_fav=Case(
    When(..., then=True),
    default=False
))

基本上可以将WhenQ一样处理,它还允许您指定满足条件时的值。

相关问题