@bubaley

Как мне правильно создавать объекты в django используя drf?

Модель:
class ProjectInvite(models.Model):
    project = models.ForeignKey(Project, on_delete=models.CASCADE, related_name='project_invites')
    from_user = models.ForeignKey(get_user_model(), on_delete=models.CASCADE, related_name='sended_project_invites')
    to_user = models.ForeignKey(get_user_model(), on_delete=models.CASCADE, related_name='came_project_invites')

Сериализатор:
class ProjectInviteSerializer(serializers.ModelSerializer):
    from_user = UserSerializer(many=False, read_only=True)
    to_user = UserSerializer(many=False)
    project = ProjectSerializer(many=False)

    class Meta:
        model = models.ProjectInvite
        fields = ('id', 'from_user', 'to_user', 'project')

Вьюха:
class ProjectInviteViewSet(viewsets.ModelViewSet):
    serializer_class = serializers.ProjectInviteSerializer
    queryset = models.ProjectInvite.objects

    def perform_create(self, serializer):
        serializer.save(from_user=self.request.user)


Подскажите Good Practice для создания Таких объектов. Варианты:
1. Использовать WritableNestedModelSerializer. Но тогда он требует передавать всю структуру проекта, что не очень хочется делать.
2. Переопределить метод ViewSet - create. Если можно, то хотелось бы пример для этого пункта.
3. Написать ApiView с одним методом и использовать его для создания, в котором буду вручную получать объекты, а в ViewSet оставить логику на получение списка и просмотр элемента.
Подскажите как это можно реализовать или может есть самый оптимальный вариант о котором я даже не догадываюсь.
  • Вопрос задан
  • 238 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы