прежде всего спасибо за ваше время. Базовая система бронирования
Мне нужно ввести 2 даты (2 поля в моделях) и получить разницу между ними, затем он должен вывести эту разницу в днях, умноженных на константу, если меньше 3, или другую константу, если больше. Я попробовал много вопросов отсюда и прочитал документ datetime и timedelta, но я не добился успеха с timedelta.
Это мои модели:
class Visitante(models.Model):
Nome = models.CharField(max_length=30)
Data1 = models.DateField(blank=True)
Data2= models.DateField(blank=True)
RG = models.CharField(max_length=9)
и это мои взгляды:
from .models import Cliente, Visitante
from django.views import generic
from django import forms
from django.views.generic import View
from django.forms import ModelForm
from datetime import datetime, timedelta
class IndexView (generic.TemplateView):
template_name = 'index2.html'
class DetailView (generic.DetailView):
model = Cliente
template_name = 'detail.html'
def reserv (request):
d1= Visitante.Data1
d2= Visitante.Data2
delta = d1 - d2
delta.days
return render(request, 'reserv-form.html', {
'date': delta
})
тогда я получаю эту ошибку:
TypeError at /reservas/reserv-form/ unsupported operand type(s) for -: 'DeferredAttribute' and 'DeferredAttribute






Вы используете класс модели, а не экземпляр модели, чтобы попытаться получить доступ к полям. Вы должны получить экземпляр, выполнив какой-нибудь запрос, например Visitante.objects.filter(...).first(). Вы также можете получить экземпляр при создании новой модели с помощью CreateView.
Было бы полезно изучить эти вещи в оболочке Django python manage.py shell для более быстрой обратной связи.
сложно отладить такое сообщение без кода, который его вызывает ... Вы пробовали в оболочке django? Можете ли вы обновить свой вопрос, указав бит, вызывающий ошибку?
Клянусь богом, я пробую все. я должен создавать объект для каждой даты? Я получаю неподдерживаемые типы операндов для-: str и str