Ice*_*ele 9 python django django-queryset
我有一个这样设置的用户模型。
class ExternalUserModel(models.Model):
email = models.EmailField()
# other fields
class MyUserModel(models.Model):
external_user = models.ForeignKey(ExternalUserModel)
# other fields
Run Code Online (Sandbox Code Playgroud)
我正在尝试从电子邮件列表中获取 MyUserModel 列表。
这是我要执行的查询:
MyUserModel.objects.filter(external_user__email__iexact__in=user_emails)
Run Code Online (Sandbox Code Playgroud)
但我收到这个错误:
Unsupported lookup 'iexact' for EmailField or join on the field not permitted.
我需要 iexact,因为电子邮件列表基于用户输入,可能与数据库中存储的大小写不匹配。
我应该如何进行这个查询?
Django ORM 并不直接支持这一点。我认为数据库后端也不会这样做。您可以通过组合多个过滤器来获得您正在寻找的结果,__iexact如此处的各种答案所示:如何在 Django 中动态组合 OR 查询过滤器?
在此处显示的选项中,reduce(operator.or_, ...)与 for 循环相比,我更喜欢语法,但这是个人偏好。