Получение нескольких столбцов из 4 различных таблиц в Django Rest Framework

Я действительно новичок в ORM и также новичок в Django. Вот мои модели.

class User(models.Model):
    id = models.AutoField()
    email = models.EmailField()


class ToDo(models.Model):
    id = models.AutoField(primary_key=True)
    user = models.ForeignKey("User", on_delete=models.CASCADE)
    title = models.TextField(max_length=50)
    detail = models.CharField(max_length=250)


class ToDoResult(models.Model):
    id = models.AutoField(primary_key=True)
    todo = models.ForeignKey("ToDo", on_delete=models.CASCADE)
    is_done = models.BooleanField(default=False)


class ToDoDay(models.Model):
    DAY_CHOICES = (
        ("0", "MON"),
        ("1", "TUE"),
        ("2", "WED"),
        ("3", "THU"),
        ("4", "FRI"),
        ("5", "SAT"),
        ("6", "SUN"),
        ("7", "ALL")
    )

    id = models.AutoField(primary_key=True)
    todo = models.ForeignKey("ToDo", on_delete=models.CASCADE)
    day = models.CharField(max_length=1, choices=Category.choices)

А то, что я хочу получить, будет таким же, как результат этого sql-запроса.

SELECT user.id, todo.title, result.is_done, day.day
FROM USER as user
LEFT JOIN TODO as todo ON user.id = todo.user_id
LEFT JOIN TODORESULT as result ON todo.id = result.todo_id
LEFT JOIN DAY as day ON todo.id = day.todo_id
WHERE user.id = 1 AND day.day = 1;

Я уже вроде как реализовал это с помощью очень наивного подхода, но мой код выглядит так грязно. Я пытался сделать сериализатор, чтобы получить все вещи сразу, но получил сообщение об ошибке, в котором говорится, что сериализатор не следует схеме БД. Как я могу добиться этого, как делают все остальные гуру django? Все остальные коды выглядят очень красиво. Спасибо, что прочитали

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