0

我正在尝试从查询集中过滤掉多封电子邮件,以阻止我们的员工电子邮件影响任何导出。我在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 并排除之后,我似乎无法让它工作。我还应该尽可能多地指出,我希望能够使用 endwith 一些员工正在使用他们的个人电子邮件地址,所以目前它不可行。

谢谢。

4

2 回答 2

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)
于 2012-07-02T09:59:34.567 回答
0

在把所有东西都扔给它之后,我偶然发现了一种方法。将 __in 与 Q 一起使用可以正确过滤掉设置中 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')
于 2012-07-02T09:49:38.220 回答