Django 技巧之 Case-When

2023-08-29  本文已影响0人  alue

在Django 的ORM实践中,灵活使用 Case-When 语句,能够帮助我们处理一些棘手问题。

例如,用户模型中有个头像字段。如果用户自己上传了头像,那么就使用这个头像。否则,需要根据用户性别,返回各自默认的男女头像。

这就非常适合 Case-When 语句来处理。

可以定义表达式为

        avatar_url = Case(
            When(avatar__exact='', then=Case(
                When(gender='男', then=Value(default_avatar_boy)),
                When(gender='女', then=Value(default_avatar_girl))
            )),
            default='avatar',
        )

然后,利用 annotate 和 values ,就能实现基于数据库的逻辑运算,速度相对更快一些。

上一篇 下一篇

猜你喜欢

热点阅读