python - Django filter() 查询在数据中给出额外的结果

标签 python django orm django-orm

我有2个对象contactscompanies_contact,我使用distinct()从联系人中获取不同的值

代码如下所示:

contacts = Contact.objects.filter(campaign=campaign)

companies_contacts = contacts.distinct('website')

因此,当我迭代 companies_contact 时,我得到以下输出...

>>>for i in companies_contacts:
       i.created_at, i.website

(datetime.datetime(2018, 1, 9, 10, 57, 40, 447445, tzinfo=<UTC>), 'www.creamstone.com')
(datetime.datetime(2018, 1, 19, 6, 27, 32, 758898, tzinfo=<UTC>), 'www.facebook.com')
(datetime.datetime(2018, 1, 18, 6, 20, 41, 145358, tzinfo=<UTC>), 'www.heteja.com')
(datetime.datetime(2018, 1, 9, 12, 11, 17, 390755, tzinfo=<UTC>), 'www.kfc .com')
(datetime.datetime(2018, 1, 31, 6, 44, 40, 916231, tzinfo=<UTC>), 'www.mvg.com')
(datetime.datetime(2018, 1, 11, 12, 20, 55, 409986, tzinfo=<UTC>), 'www.subway.com')
(datetime.datetime(2018, 1, 9, 9, 14, 58, 607180, tzinfo=<UTC>), 'www.websit.com')
(datetime.datetime(2018, 1, 9, 6, 29, 53, 270203, tzinfo=<UTC>), 'www.website.com')
(datetime.datetime(2018, 1, 9, 9, 22, 22, 869395, tzinfo=<UTC>), 'www.websitest.com')

因此,根据我的轻描淡写 companies_contact 仅包含这么多数据,但是当我在 companies_contact 上应用 filter() 时上面输出中没有的不同日期,它也给了我结果。

companies_contacts.filter(created_at__startswith='2018-02-01')

上面的查询给了我结果,但是当我迭代companies_contact时,这个created_at值不存在

我不知道它为什么给出结果以及为什么它有效,但是如果日期不存在,我不想要结果

enter image description here

最佳答案

我不确定你想做什么,所以我猜这可能是因为过滤器内的 startswith 标签。如果您将startswith标签更改为gte和lt会怎样:
1. 将 '2018-02-01' 解析为日期时间对象。

date_obj = parse('2018-02-01')

2.使用大于等于和小于进行过滤。

companies_contacts.filter(
     created_at__gte=date_obj,
     created_at__lt=date_obj + relativedelta(days=+1)
)

我正在使用 dateutil 包:

from dateutil.parser import parse
from dateutil.relativedelta import relativedelta

关于python - Django filter() 查询在数据中给出额外的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48570312/

相关文章:

python - 使用healpy使用HEALPix像素化制作2D直方图

python - 当我尝试在 Django2 中迁移时出错

java - 使用hibernate从表中获取数据

python - 基于共享值的列表的集群列表

python - Django:TypeError at/categories/sequence item 0:预期的 str 实例,找到类别

python - 在 Django 中将数据插入表之前检查条件

python - 为什么 virtualenvwrapper 没有将我的环境位置添加到我的 $PATH

python - 连接到 sqlalchemy 模型

django - 如何将多个模型绑定(bind)到一个 ManyToManyField?

python - 删除包含特定模式的行 [Python/Pandas]