Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/348.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/apache-spark/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django筛选器在列表上显示_Python_Django_Django Queryset - Fatal编程技术网

Python Django筛选器在列表上显示

Python Django筛选器在列表上显示,python,django,django-queryset,Python,Django,Django Queryset,我有一个这样设置的用户模型 class ExternalUserModel(models.Model): email = models.EmailField() # other fields class MyUserModel(models.Model): external_user = models.ForeignKey(ExternalUserModel) # other fields 我正试图从电子邮件列表中获取MyUserModel的列表 这是我要执行

我有一个这样设置的用户模型

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或该字段上的join进行不支持的查找“iexact”。

我需要iexact,因为电子邮件列表基于用户输入,可能与数据库中存储的大小写不匹配


我应该如何进行此查询?

电子邮件必须完整,因此应该准确,您不需要使用
\uuuiExact
查找。你只需要:

MyUserModel.objects.filter(external_user__email__in=user_emails)

Django ORM并不直接支持这一点。我认为数据库后端也不行。您可以通过组合多个
\uuuu iexact
过滤器来获得所需的结果,如以下各种答案所示:


在这里显示的选项中,我更喜欢
reduce(operator.or,…)
语法而不是for循环,但这是我个人的偏好。

谢谢
query=reduce(operator.or(用户电子邮件中x的外部用户电子邮件iexact=x))
MyUserModel.objects.filter(query)
成功了!这考虑到了案例,即
email@example.com
Email@example.com