如何使用CASE WHEN-THEN-ELSE在乌龟orm中

2024-05-23 19:01:13 发布

您现在位置:Python中文网/ 问答频道 /正文

嗨,我在试着用CASE,然后用otroiseorm。 我尝试了以下方法,但没有成功:

import datetime
import tortoise.models
import tortoise.fields
import tortoise.expressions
from pypika import Case

class Task(tortoise.models.Model):
    uid = tortoise.fields.UUIDField(pk=True)
    name = tortoise.fields.CharField(255)
    name_updated_at = tortoise.fields.data.DatetimeField(auto_now_add=True, null=False)

await Task.filter(uid="my-super-uid").update(
    name=Case()
    .when(tortoise.expressions.F('name_updated_at') > datetime.datetime.utcnow(), "Hi")
    .else_(tortoise.expressions.F('name'))
)

我知道CASE是supported by pypika,但我不知道如何在龟甲中使用它。 此外,我确实希望使用用例,因为我希望在一次更新中使用多个字段的用例,而不是使用不同的filter(...)参数进行多个更新

知道如何使用CASE()


Tags: nameimporttruefieldstaskuiddatetimemodels