Django Rest Framework, Как получить значение внешнего ключа и добавить его в мой сериализатор или представление для создания нового объекта?

models.py

Модель пользователя это import auth user model from django

class Profile(models.Model):
username_id = models.OneToOneField(User, on_delete=models.CASCADE, primary_key=True)
phone_number = PhoneNumberField(blank=True, null=True)
image_url = models.ImageField(blank=True, null=True)
address = models.CharField(max_length=30)
update = models.DateTimeField('Updated at', default=timezone.now())

def __str__(self):
    return self.username_id.__str__()

views.py

@api_view(['POST'])
def profile_create(request, pk):
    request
    serializer = ProfileCreateSerializer(data=request.data)
    # print(serializer)

    if serializer.is_valid():

        serializer.save()
    else:
        return Response(serializer.errors)
    return Response(serializer.data)

serializers.py

class ProfileCreateSerializer(serializers.ModelSerializer):

class Meta:
    model = Profile
    fields = ['phone_number', 'image_url', 'address']

Я хочу создать новый профиль для пользователя, но не знаю, где или как передать значение внешнего ключа в сериализатор или представление для создания нового профиля

error

django.db.utils.IntegrityError: null value in column "username_id_id" of relation "users_pr
ofile" violates not-null constraint
DETAIL:  Failing row contains (, , HELLLfwfwefwf, 2021-09-02 20:08:58.53219+00, null).

Предполагая, что профиль предназначен для текущего вошедшего пользователя, вы можете сделать что-то вроде этого в вашем save():

serializer.save(username_id=request.user)

Это установит username_id внешний ключ на текущего вошедшего пользователя.

Вернуться на верх