Фильтр набора запросов Django - PullRequest
0 голосов
/ 07 марта 2019

Я пытаюсь создать набор запросов, который фильтрует все машины, взятые напрокат пользователем.В модели проката автомобилей есть внешний ключ, который хранит идентификатор пользователя при аренде автомобиля

Мое текущее решение выглядит следующим образом: я получаю идентификатор текущего пользователя, а затем пытаюсь отфильтровать базу данных автомобилей по идентификатору пользователя.

view.py:

def view_hire(request):
  current_users_id = request.user.id
  car_hired = Cars_hired.objects.filter(user_id__in=current_users_id) 
  args = 
  {
      'car_hired': car_hired,
  }

Модели

class UserProfile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)

    def __str__(self):
        return str(self.user.id)

class car_hired(models.Model):
    car = models.ForeignKey('Car', on_delete=models.CASCADE)
    customer = models.ForeignKey('UserProfile', on_delete=models.CASCADE)
    start_date = models.DateField(help_text='Date of booking')
    end_time = models.DateField(help_text='Date of booking')


    def __str__(self):
        return str(self.id)

Однако я не могу заставить это работать, и я получаю ошибку "'int«объект не повторяется»

Я хотел бы создать набор запросов, который возвращает строку данных, которая соответствует запросу

, например, если идентификатор текущего пользователя равен 10, я хотел быполучить все машины, взятые напрокат пользователем.Все данные хранятся в строках где car_hirer_is == 10

1 Ответ

0 голосов
/ 07 марта 2019

Эта часть вызывает ошибку:

...(user_id__in=current_users_id)

Когда вы добавляете __ в часть, это заставляет django думать, что current_users_id является итеративным, но current_users_id = request.user.id - это один идентификатор. Чтобы заставить его работать, измените его на:

def view_hire(request):
  current_users_id = request.user.id
  car_hired = Cars_hired.objects.filter(customer__user_id=current_users_id)

Я бы также пересмотрел имена переменных (current_user_id вместо current_users_id и cars_hired вместо car_hired).

...