Я пытаюсь сделать фильтр на основе дат для запланированных событий. Я хочу предметы, которые произошли 60 дней назад и запланированы через 60 дней. Таким образом, начало диапазона сегодня - 60 дней, а конец диапазона - сегодня + 60 дней. Я не использовал Django в течение долгого времени, и я не знаю, является ли это новой проблемой с текущей версией и auto_now и auto_add_now или если проблема использует DateField. Я использовал DateField на моделях, потому что мне нет дела до времени и я не хочу, чтобы эти поля времени добавлялись в базу данных. Я хочу чистые даты.
Index.html
<!DOCTYPE html>
{% load static %}
<title>Document</title>
<body>
<div id=form>
<select name="Title" id="title_box">
{% for item in items %}
<option value="{{item.name}}">{{item.name}}</option>
{% endfor %}
</select>
</div>
</body>
</html>
Models.py
from __future__ import unicode_literals
from django.db import migrations, models
import datetime
class Cycle(models.Model):
name= models.CharField(max_length=255)
start_date = models.DateField(auto_now=False, auto_now_add=False,
blank=True, null=True)
end_date = models.DateField(auto_now=False, auto_now_add=False,
blank=True, null=True)
Я изменил поле с DateField на DateTimeField, и это не имело никакого значения, поэтому я изменил его обратно на DateField
.
Views.py
from django.shortcuts import render, HttpResponse, redirect
from .models import *
import datetime
def main(request):
beginDate = datetime.date.today() - datetime.timedelta(days=60)
stopDate = datetime.date.today() + datetime.timedelta(days=60)
context = {
"items": Cycle.objects.filter(start_date=[beginDate,stopDate])
}
return render (request, 'app/index.html', context)
Я хочу отобразить события, которые произошли 60 дней назад и произойдут в следующие 60 дней. Код, который у меня есть, теперь отражает только start_date в модели. Я просто пытаюсь сделать шаги ребенка и выяснить одно, а затем использовать ИЛИ, чтобы получить другое позже. Я полагаю, это будет что-то вроде:
"items": Cycle.objects.filter(start_date=[beginDate,stopDate] | end_date=[beginDate, stopDate])
В любом случае, я получаю ошибку:
TypeError в / ожидаемой строке или байтовоподобном объекте
Я думаю, что ошибка с:
context = {
"items": Cycle.objects.filter(start_date=[beginDate,stopDate])
}
Я напечатал «beginDate», и он дал мне 2018-11-09, что является правильным для диапазона, который я хочу. Я использовал type
, чтобы посмотреть, поможет ли это выяснить несоответствие, и получил <class 'datetime.date'>
. Сейчас я думаю, что, может быть, он не совпадает с models.py, но я не уверен, так ли это и как сделать так, чтобы они совпадали. Прочитав несколько постов, я также попытался использовать timezone.now()
и date.today()
для beginDate
и stopDate
, но получил ошибки, в которых говорилось, что дата и часовой пояс не определены. Я также использовал «makemigrations» и «migrate».
Любая помощь будет принята с благодарностью.