Django Queryset возвращает все, если поле пусто при наличии отношения OneToMany
У меня есть html-страница, на которой можно искать автомобиль по нескольким критериям. Как мне сказать django orm возвращать все, если поле пустое? Я проверил этот вопрос и реализовал ту же идею из первого ответа, но это не работает для внешних полей, особенно для поля модели, которое, если оставить пустым, я получаю эту ошибку. Вот мои классы
class City(models.Model):
name = models.CharField(max_length=10, null=True)
created_at = models.DateTimeField(auto_now_add=True, null=True, blank=True)
updated_at = models.DateTimeField(auto_now=True, null=True, blank=True)
class PowerSource(models.Model):
source = models.CharField(max_length=8)
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
class Manufacturer(models.Model):
manufacturer = models.CharField(max_length=45)
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
class CarModel(models.Model):
model = models.CharField(max_length=45)
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
manufacturer = models.ForeignKey(Manufacturer, related_name='car_models', on_delete=models.CASCADE)
class Car(models.Model):
color = models.CharField(max_length=10, null=True)
year = models.IntegerField(null=True, validators=[MinValueValidator(datetime.today().year-120), MaxValueValidator(datetime.today().year+1)])
num_passengers = models.IntegerField(validators=[MinValueValidator(1)], null=True)
transmission = models.CharField(max_length=9, null=True)
status = models.CharField(max_length=4, null=True)
price = models.IntegerField(validators=[MinValueValidator(1)], null=True)
bhp = models.IntegerField(null=True)
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)
city = models.ForeignKey(City, related_name='cars', on_delete=models.CASCADE)
power_source = models.ForeignKey(PowerSource, related_name='cars', on_delete=models.CASCADE)
model = models.ForeignKey(CarModel, related_name='cars', on_delete=models.CASCADE)
Например, если я выбираю производителя и оставляю остальные поля пустыми, я должен получить все автомобили этого производителя, независимо от цвета, года выпуска и т.д. Однако я получаю упомянутую ошибку. Если я выбираю производителя и модель, я не получаю ошибку, но результат поиска пуст. Есть идеи?