как я могу получить все данные из моего модельного бронирования с датой меньше, чем сегодня, я хочу показать историю бронирования клиента - PullRequest
0 голосов
/ 22 апреля 2020

view.py def Профиль (request, uid):

book =booking.objects.filter(user=uid)
user =User.objects.get(id=uid)
books = booking.objects.filter(created__lt=datetime.today(),user=uid)

params={'book':book,'user':user,'books':books}
return render(request, 'hotel/userProfile.html',params)

Ответы [ 2 ]

0 голосов
/ 22 апреля 2020
        def Profile(request,uid):   
         user =User.objects.get(id=uid) #this displays user information in profile
         books = booking.objects.filter(date__gte=datetime.today(),user=uid) #displays booking date greater than equal to today
         book = booking.objects.filter(date__lt=datetime.today(),user=uid) #displays booking date greater than eqaul to today
         params={'book':book,'user':user,'books':books}
         return render(request, 'hotel/userProfile.html',params)

это также может быть сделано вышеуказанным способом !! да, немного долго, но у меня работает.

0 голосов
/ 22 апреля 2020

Ваша переменная book уже отфильтрована на user=uid, чтобы получить все заказы для пользователя, попробуйте отфильтровать этот набор результатов, чтобы ограничить даты:

user = User.objects.get(id=uid)
book = booking.objects.filter(user=user)
books = book.filter(created__lt=datetime.date.today())

(обратите внимание на изменение с datetime.today() to datetime.date.today())

Вы также можете использовать контекст Django _set, чтобы получить все книги для пользователя вместо явного использования filter (Django автоматически создаст связанное имя как имя ссылочной модели с суффиксом _set, которое вы можете использовать для захвата всех связанных объектов - в вашем случае это будет называться booking_set):

user = User.objects.get(id=uid)
books = user.booking_set.all()

В качестве отступления, использование filter для объекта набора запросов просто возвращает другой набор запросов, так что вы можете связать их вместе. Таким образом, вы можете сделать что-то вроде этого, если хотите:

books = User.objects.get(id=uid).booking_set.all().filter(created__lt=datetime.date.today())

Вы должны прочитать этот раздел документации, он объяснит всю механику сохранения и извлечения записей из БД : https://docs.djangoproject.com/en/3.0/topics/db/queries/

...