Модель:
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 оставить логику на получение списка и просмотр элемента.
Подскажите как это можно реализовать или может есть самый оптимальный вариант о котором я даже не догадываюсь.