2013-12-23 5 views
0

Я хочу получить, сколько недель прошло с даты (которая хранится в .db) от сегодняшней даты. Я пытался работать со многими ответами из Интернета, но, похоже, не мог заставить его правильно воспроизводить. Наиболее распространенная ошибка я получаю при попытке вещи из внеDjango получить недели от модели до сегодняшнего дня

unsupported operand type(s) for -: 'QuerySet' and 'datetime.date' 

Класс в models.py

class ADown(models.Model): 
    Aname = models.CharField(max_length=200) 
    dateStart = models.DateTimeField('date start') 
def __unicode__(self): 
    return self.Aname 

В views.py - Я чувствую, что это потому, что я на самом деле не правильно ссылки «dateStart 'от .Все()

from django.utils import timezone 
from ADown.models import Adown 
import datetime 

def index(request): 

d1 = ADown.objects.all() 
totalweeks = (d1 - datetime.date.today()).TotalDays/7 
print totalweeks 
latest_poll_list = ADown.objects.order_by('-dateStart')[:5] 
template = loader.get_template('ADown/index.html') 
context = RequestContext(request, { 
    'latest_poll_list': latest_poll_list, 
    'totalweek': totalweeks, 
    'todays': datetime.now(), 
}) 
return HttpResponse(template.render(context)) 

И как я это называю в .html

</thead> 
<tbody> 
{% for ADown in latest_poll_list %} 
    <tr> 
     <td><a>{{ ADown.AName }}</a></td> 
     <td><a>{{ totalweek }}</a></td> 
     <td><a>{{ ADown.dateStart }}</a></td> 
    </tr> 
{% empty %} 
     <li><a>Something wrong!</a></li> 
{% endfor %} 
</tbody> 
</table> 
</div> 
{% if latest_poll_list %} 

ответ

0

Вы принимаете все Зарегистрируйте объектов (объект запроса) в своей базе данных и вычитайте количество недель текущего месяца. Для этого необходимо обратиться к dateStart в переменной d1.

QuerySet в этом случае ADown.objects.all() не является допустимым datetype которым вы можете работать с объектом DateTime datetime.date.today().

+0

Как правильно указать датуStart ADown.object.get ('dateStart')? – user1043816

+0

Вы можете сделать это: = ADown.objects.all(), затем перебрать список, используя for. 'для i в a:' –

+0

@ user1043816 Вы можете сделать это: a. ADown.objects.all(), затем перебрать по списку, используя for. 'for i in a: i.dateStart', тогда вы можете сравнить каждое поле Date DateStown объекта ADown с сегодняшней датой, чтобы получить количество недель. Тем не менее, вы не должны использовать datetime, вместо timezone.now() для сравнения –

Смежные вопросы