Как реализовать необработанный sql-запрос в DRF с параметрами

Привет всем я пытаюсь реализовать raw sql запрос для создания api в django framework и входные параметры это team_id, start_date и end_date. например team_id=1 и start=2022-04-25 и end_date=2022-05-01, и temp1 query date например 7 дат от 2022-04-25 до 2022-05-01. как это сделать, пожалуйста, помогите мне.

models.py

class Car_dash_daily(models.Model):
    created_at = TimestampField(null=True, blank=True, auto_now_add=True)
    car_number = models.CharField(max_length=80, null=True, blank=True)
    date = models.DateField(null=True, blank=True)
    car_status = EnumField(choices=['DRIVEN', 'INSURANCE', 'ND', 'REPAIR', 'SERVICE', 'BREAKDOWN', 'ACTIVE', 'B2B', 'PARKING'], default=None)
    trips = models.IntegerField(null=True, blank=True)
    online_hours = models.CharField(max_length=10, null=True, blank=True)
    revenue = models.FloatField(max_length=10, null=True, blank=True)
    status = EnumField(choices=['STICKERING', 'CALL_FOR_GPS','SERVICING'], default=None)
    team = models.ForeignKey(
        Team,
        models.CASCADE,
        verbose_name='Team',
        null=True,
    )
    car = models.ForeignKey(
        Car,
        models.CASCADE,
        verbose_name='Car',
        null=True,
        blank=True
    )
    city = models.ForeignKey(
        City,
        models.CASCADE,
        verbose_name='City',
        null=True,
    )
    driver = models.ForeignKey(
        Driver,
        models.CASCADE,
        verbose_name='Driver',
        null=True,
        blank=True
    )

sql запрос-

Вы можете использовать функцию raw() для добавления необработанных SQL-запросов.

Person.objects.raw('SELECT id, first_name, last_name, birth_date FROM myapp_person')

Код из документации

У меня была конкретная проблема, связанная с этим, когда я не мог использовать Django ORM в зависимости от сложности запроса. Проблема не связана с самим Django ORM, скорее с отсутствием глубоких знаний в отношении перевода сложного необработанного SQL запроса в Django ORM. В спешке это лучший и самый быстрый способ.

Вернуться на верх