Я новичок в джанго. У меня есть следующая модель:
class Standup(models.MOdel):
team = models.ForeignKey("Team", on_delete=models.CASCADE)
standup_time = models.DateTimeField(auto_now_add=True)
employee = models.ForeignKey("Employee", on_delete=models.CASCADE)
update_time = models.DateTimeField(auto_now_add=True)
status = models.CharField(max_length=50)
work_done_yesterday = models.TextField()
work_to_do = models.TextField()
blockers = models.TextField()
Класс сериализатора выглядит так:
class StandupSerializer(serializers.ModelSerializer):
class Meta:
model = Standup
fields = '__all__'
Видсет такой:
class StandupDetail(viewsets.ModelViewSet):
queryset = Standup.objects.all()
serializer_class = StandupSerializer
Моя задача — сделать единый API, который будет сохранять данные всех сотрудников, а не сохранять данные сотрудников по отдельности. В текущей реализации каждому сотруднику придется обращаться к API отдельно, чтобы сохранить данные в базе данных. Каждый сотрудник сначала выбирает команду, так как один сотрудник может быть частью нескольких команд. Мы сохраним список объектов. Любые руководства о том, как это сделать?






Django предоставляет метод bulk_create для достижения этой цели.
Например, вы можете поместить приведенную ниже функцию в соответствующий класс в наборе представлений:
def bulk_update_standup(self, request, *args, **kwargs):
standup_list = request.data.get("standupList", [])
qs = []
for item in standup_list:
serializer = StandupSerializer(data=item)
standup_instance = Standup(**serializer.validated_data)
qs.append(standup_instance)
Standup.objects.bulk_create(qs)
data = {"data": None, "message": "Saved Successfully"}
return Response(data=data, status=status.HTTP_200_OK)
Вы можете переопределить метод создания.
def create(self, request, *args, **kwargs):
if isinstance(request.data, list):
serializer = self.get_serializer(data=request.data, many=True)
else:
serializer = self.get_serializer(data=request.data)
serializer.is_valid(raise_exception=True)
self.perform_create(serializer)
headers = self.get_success_headers(serializer.data)
return Response(serializer.data, status=status.HTTP_201_CREATED, headers=headers)
Попробуйте передать список данных в теле запроса. Вам необходимо изменить свой сериализатор, а также переопределить создание для массового создания и сохранения данных. Вы можете следить за этим. https://www.django-rest-framework.org/api-guide/serializers/#customizing-multiple-create