У меня есть две модели:
class Project(models.Model):
name = models.CharField(max_length=255)
client = models.ForeignKey(client, on_delete=models.CASCADE)
class Client(model.Model):
name = models.CharFiled(max_length=255)
Предположим, мои данные:
Client table - [{id:1,name:client1}, {id:2, name:client2}
Project table - [{id:1, name: project1, client:1},
{id:2, name: project2, client:1},
{id:3, name: project3, client:2}]
a Client.objects.all () QuerySet вернет два объекта, client1 и client2, какой клиент 1 имеет 2 проекта, а client2 - только 1.
Я пытаюсь упорядочить QuerySet по имени проекта, но для каждого объекта Client. сделать это следующим образом:
clients = Client.objects.order_by("project__name")
как ожидается, в результате будет получено 3 объекта client, 2 для client1 и один для client 2. Это вывод:
[{id:1, name:client1, projects : [{id:1, name: project1},{id:2, name: project2}]},
[id:1, name:client1, projects : [{id:1, name: project1},{id:2, name: project2}]},
[id:2, name:client1, projects : [{id:3, name: project3}]}]
Однако мой Проблема в том, что каждый клиентский объект содержит все проекты, а не только указанный c упорядоченный.
Я пытаюсь фильтровать для каждого объекта клиента, даже если клиент совпадает только с запрошенными заказанными проектами.
Теоретически я могу сделать это вручную после получения набора запросов, но я предполагаю, что есть способ сделать это, потому что запрос знает, какой проект конкретно вызывает создание новой строки в наборе запросов.
мой ожидаемый вывод для данных данных - это набор запросов со следующими данными (которые я отправляю, кстати, сериализатору), обратите внимание, что у меня есть два объекта клиента, но с другим списком проектов, потому что order_by разбивает его. вот чего я хочу достичь:
[{id:1, name:client1, projects : [{id:1, name: project1}]},
{id:1, name:client1, projects : [{id:2, name: project2}]},
{id:2, name:client1, projects : [{id:3, name: project3}]}]