gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 14:10:08 25 4
gpt4 key购买 nike

我有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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com