內的值我有存儲多個日期爲列表中的字符串一個weeks_list領域的圖書模型:篩選模型的列表
['2015-09-15', '2015-09-27']
在我views.py
文件我希望能夠到,給定一個起始日期和結束日期(格式相同)的過濾器書籍只能是weeks_list
字段中至少有一個日期在給定值之間的日期。
例如如果一本書具有的weeks_list
領域:
['2015-09-15', '2015-09-27']
然後,如果我有start_date = 2015-09-10
和end_date = 2015-09-16
那本書被接受。同樣如果s tart_date = 2015-09-16
和end_date = 2015-09-28
。
我可以做這樣的事情:
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)
但它不工作。是否有可能使第三行成爲「或」聲明?
這是模型:
class Book(models.Model):
title = models.CharField(max_length=200)
author = models.CharField(max_length=200)
rating = models.CharField(max_length=5)
genre = models.CharField(max_length=200)
NYT_image_url = models.CharField(max_length=200)
GR_image_url = models.CharField(max_length=200)
isbns = models.TextField(max_length=600)
weekly_rank = models.TextField(max_length=1000)
weeks_list = models.TextField(max_length=1000)
goodreads_ID = models.CharField(max_length=25)
goodreads_URL = models.CharField(max_length = 100)
NYT_description = models.TextField(max_length = 500)
EDIT2:我發現了一個解決方案,我應該用q.or代替q.connector。不知道如何將此標記爲已解決。
你爲什麼不告訴我們你的模型? – ozgur