我正在尝试从查询集中过滤掉多封电子邮件,以阻止我们的员工电子邮件影响任何导出。我在settings.py中有以下内容:
EMAIL_FILTERS = ['email1', 'email2']
我正在尝试使用此功能在以下查询中使用我们的电子邮件过滤掉数据库中的所有条目:
EMAIL_FILTERS = getattr(settings, 'EMAIL_FILTERS')
campaigns = CampaignsSignup.objects.filter(created_date__gte=self._get_start_date(dte),
created_date__lte=self._get_end_date(dte)).order_by('-created_date')
然而,在尝试Q并排除后,我似乎无法让它发挥作用。我还应该注意,尽管我希望能够使用某些员工正在使用他们的个人电子邮件地址,但目前它不可行。
感谢。
答案 0 :(得分:1)
我发现你找到了解决方案,但正常的做法是使用exclude
:
campaigns = CampaignsSignup.objects.filter(
created_date__gte=self._get_start_date(dte),
created_date__lte=self._get_end_date(dte)
).order_by('-created_date').exclude(email__in=SAVCHAMP_EMAIL_FILTERS)
答案 1 :(得分:0)
在把所有东西扔到它之后我偶然发现了一种方法。在Q中正确使用__in过滤掉设置中email_filter列表中包含的电子邮件。
campaigns = CampaignsSignup.objects.filter(~Q(email__in=SAVCHAMP_EMAIL_FILTERS), created_date__gte=self._get_start_date(dte),
created_date__lte=self._get_end_date(dte)).order_by('-created_date')