#python #django #django_orm
Задача: Есть 2 таблицы: Марка автомобиля и Модель автомобиля class Manufacturer(models.Model): title = models.CharField(_("Full name"), max_length=255, blank=True) class CarModel(models.Model): manufacturer = models.ForeignKey(Manufacturer, on_delete=models.PROTECT, related_name="models_car") production_start = models.DateField(null=True, blank=True) production_end = models.DateField(null=True, blank=True) Для каждой модели авто есть год начала и окончания выпуска (конец не для всех есть). От пользователя приходит год. Необходимо вернуть марки автомобилей для которых есть хотя бы одна модель с годом выпуска, полученным от пользователя. Т.е. по сути необходима функция которая на вход получает число, а на выходе отдает QuerySet из Manufacturer. Пример: Manufacturer: id title =========== 1 Audi 2 BMW Model: mfa_id start end ========================= 1 1932 1960 1 1980 2001 2 1977 2014 2 2004 ---- От пользователя приходит год = 1954. Нужно вернуть только Audi, тк у BMW нет модели 1954 года выпуска.
Ответы
Ответ 1
.Здравствуйте, почитайте про вложенные запросы , думаю все станет понятно. Кроме того с одного запроса можно обратиться к двум таблицам сразу.Ответ 2
Сделал так: def get_mfa(year): year = date(int(year), 1, 1) cm = CarModel.objects.filter(Q(production_end__gte=d) | Q(production_end=None), production_start__lte=d) return Manufacturer.objects.filter(models_car__in=cm).distinct()
Комментариев нет:
Отправить комментарий