Django filter()查询在数据中提供额外的结果

时间:2018-02-01 19:26:30

标签: python django orm django-orm

我有2个对象companies_contactcontacts = Contact.objects.filter(campaign=campaign) companies_contacts = contacts.distinct('website') ,我使用distinct()从联系中获取不同的值

代码如下所示:

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

所以,根据我的提法filter()仅包含这么多数据,但当我在companies_contact上使用companies_contacts.filter(created_at__startswith='2018-02-01') 时,不同的日期不在上面的输出中,那么它也是给我结果。

created_at

上面的查询给出了结果,但当我迭代companies_contact

时,此for(var i = 0; i < randomChosenWord.length; i++) { if(randomChosenWord[i] === this.letter){ lettersChosen.splice(i, 1, this.letter); } } 值不存在

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

enter image description here

1 个答案:

答案 0 :(得分:1)

我不确定你要做什么,所以我猜这可能是因为过滤器里面的 startswith 标签。如果您使用gte和lt:
更改带有标记的标记,该怎么办? 1.将'2018-02-01'解析为datetime对象。

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