【发布时间】:2016-08-15 13:12:56
【问题描述】:
我正在尝试从数据库中搜索并列出两个日期之间的日期,但不知道该怎么做??
models.py
...
class ProductsTbl(models.Model):
created = models.DateTimeField(editable=False)
...
views.py
def search(request):
error = False
if 'q1' and 'q2'in request.GET:
q = request.GET['q1','q2']
if not q:
error = True
else:
books = ProductsTbl.objects.filter(created__range=q)
return render(request, 'search_results.html',
{'books': books, 'query': q})
return render(request, 'search_form.html', {'error': error})
我查了stackoverflow here,但不明白怎么做
我应该在 models.py 中再添加一个 DateTimeField 来帮助搜索吗??
实际上我可以在 python manage.py shell 中做到这一点,但我怎样才能让它在网络上工作?
我的
search_form.html
<form action="" method="get">
<table style="width:30%">
<tr>
<td><input type="text" class="datepicker" name="q1"> </td>
<td style="width:5%"> between </td>
<td><input type="text" class="datepicker" name="q2"></td>
<br>
<td><input type="submit" value="Search"></td>
</tr>
</table>
</form>
search_results.html
{% if books %}
<p>Found {{ books|length }} product{{ books|pluralize }}.</p>
<ul>
{% for book in books %}
<li>{{ book.created }}</li>
<h2><a href="{% url 'thing_detail' slug=book.slug %}">{{ book.name }}</a></h2>
{% endfor %}
</ul>
{% else %}
<p>No products matched your search criteria.</p>
{% endif %}
如果只过滤一个日期,我可以使用它
views.py
def publish(request):
error = False
if 'q' in request.GET:
q = request.GET['q']
if not q:
error = True
else:
books = ProductsTbl.objects.filter(release__icontains=q)
return render(request, 'publish_results.html',
{'books': books, 'query': q})
return render(request, 'publish_form.html', {'error': error})
然而,,,when 出现在两个日期范围之间,,,我不知道该怎么做
【问题讨论】:
-
您是否遇到任何错误?有什么问题?
-
网络上没有错误,但我无法过滤两个日期时间之间的日期
标签: django django-models django-views