我有一个这样设置的用户模型。
class ExternalUserModel(models.Model):
email = models.EmailField()
# other fields
class MyUserModel(models.Model):
external_user = models.ForeignKey(ExternalUserModel)
# other fields
我正在尝试从电子邮件列表中获取 MyUserModel 列表。
这是我要执行的查询:
MyUserModel.objects.filter(external_user__email__iexact__in=user_emails)
但是我收到了这个错误: 不支持对 EmailField 的查找“iexact”或不允许在该字段上加入。
我需要 iexact,因为电子邮件列表是基于用户输入的,可能与数据库中存储的大小写不匹配。
我应该如何进行此查询?
请您参考如下方法:
Django ORM 不直接支持它。我认为数据库后端也不会。您可以通过组合多个 __iexact 过滤器来获得您正在寻找的结果,如此处的各种答案所示:How to dynamically compose an OR query filter in Django?
在此处显示的选项中,我更喜欢 reduce(operator.or_, ...) 语法而不是 for 循环,但这是个人偏好。
