我有一个带有week_list字段的Book模型,该字段将多个日期存储为列表中的字符串:
['2015-09-15', '2015-09-27']
在我希望的views.py
文件中,给定开始日期和结束日期(格式相同)过滤书籍只能在{{1 }}字段位于给定值之间。
e.g。如果某本书的weeks_list
字段为:
weeks_list
然后,如果我有['2015-09-15', '2015-09-27']
和start_date = 2015-09-10
该图书被接受。与s end_date = 2015-09-16
和tart_date = 2015-09-16
相同。
我可以这样做:
end_date = 2015-09-28
如果我可以以某种方式循环它,以便在开始日期和结束日期之间的所有日期都有一个Q对象。这可能吗?
我知道那里有大于/小于过滤器但是从我看过的例子来看,它会对字段中的奇异值起作用而不是值列表。
编辑: 我也试过这个:
allbooks = Book.objects.filter(Q(weeks_list__contains=start_date)|Q(weeks_list__contains='2015-09-27'))
但它不起作用。是否可以使第三行成为"或"声明?
这是模型:
allbooks = Book.objects.all()
q=Q(weeks_list__contains='2015-09-12')
q = q.add((Q(weeks_list__contains='2015-09-15')), q.connector)
allbooks = allbooks.filter(q)
EDIT2:我找到了一个解决方案,我应该使用q.or而不是q.connector。不确定如何将其标记为已解决。
答案 0 :(得分:0)
您没有日期列表(“$(this).append(date);
”),如果您有文本字段,则应将日期表示为weeks_list
而不是dateField's
。
在查询中使用TextField
,您会询问contains
是否是另一个子字符串o。
因此,如果您在此string
和start_date = 2015-09-16
之间查询图书,则“字符串日期”不是“end_date = 2015-09-28
”的子字符串
阅读更多here关于包含django过滤器。