Получение нескольких столбцов из 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? Все остальные коды выглядят очень красиво. Спасибо, что прочитали