Я могу посоветовать вам использовать serializers.ModelSierializer
.Так это будет выглядеть так:
class ProjectModelSerializer(serializers.ModelSerializer):
class Meta:
model = Project
fields = [..., 'agent',....] # you can use exclude also
def to_representation(self, instance):
self.fields['agent'] = AgentSerializer(many=True)
return super().to_representation(instance)
Здесь ModelSerializer
автоматически обрабатывает поле «многие ко многим».Более того, показывая ваши результаты, вы можете вернуть агента как объект при определении его в методе to_representation(self, instance)
сериализатора.Таким образом, он будет возвращать не только идентификатор агентов в массиве, но и дополнительную информацию, определенную AgentSerializer
.Если вы хотите создать много проектов, вы должны использовать ключевое слово many=True
в ProjectModelSerializer
(ProjectModelSerializer(data=request.data, many=True)
), и тело запроса изменится следующим образом:
[
{
.... # project data,
agents = [1,2,3,4,5,...], # primary keys of Agents
},
{
.... # project data,
agents = [1,2,3,4,5,...], # primary keys of Agents
},
]