我的用户模型设置如下。
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)
但是我收到了这个错误:
Unsupported lookup 'iexact' for EmailField or join on the field not permitted.
我需要iexact,因为电子邮件列表是基于用户输入的,可能与存储在数据库中的大小写不匹配。
我应该如何进行此查询?
答案 0 :(得分:2)
Django ORM不直接支持。我不认为数据库后端也会这样做。您可以通过组合多个reduce(operator.or_, ...)
过滤器来获得您要查找的结果,如各种答案所示:How to dynamically compose an OR query filter in Django?
在那里显示的选项中,我更喜欢shell=True
语法for for循环,但这是个人偏好。
答案 1 :(得分:-1)
电子邮件必须完整,因此,它应该是准确的,您不需要使用handler.removeCallbacks(setTextRunnable);
查找。你只需要:
__iexact