Есть модель Profile
class Profile(models.Model):
user = models.OneToOneField(User, verbose_name="Пользователь", related_name="profile", on_delete=models.CASCADE)
name = models.CharField("Имя", max_length=30)
surname = models.CharField("Фамилия", max_length=30)
patronymic = models.CharField("Отчество", max_length=30)
kind = models.CharField("Клиент или специалист", max_length=20, choices=KIND_CHOICES)
regions = models.CharField("Регионы", max_length=100)
phone = models.CharField("Телефон", max_length=15)
Профиль создаётся изначально как только создан юзер (т.е user уже связан с этим профилем, но профиль пустой) (сигнал)
Мне нужно принять POST запрос и **наполнить** пустой профиль
Сделал сериализатор вот таким:
class ProfileSerializer(serializers.ModelSerializer):
user = serializers.StringRelatedField(read_only=True)
class Meta:
model = Profile
fields = [
'user', 'name', 'surname',
'patronymic', 'kind', 'regions',
'phone', 'company', 'categories'
]
views:
class ProfileCreate(generics.GenericAPIView):
# Наполнение профиля юзера
serializer_class = ProfileSerializer
permission_classes = [IsAuthenticatedOrReadOnly]
def post(self, request, *args, **kwargs):
user = get_object_or_404(User, pk=request.user.pk)
serializer = self.get_serializer(data=request.data)
if serializer.is_valid():
user.profile = serializer.save()
return Response(ProfileSerializer(user.profile))
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
Вылетает ошибка:
IntegrityError at /api/profile/create/
NOT NULL constraint failed: app_profile.user_id
Помогите решить данную проблему.