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
внешний ключ на текущего вошедшего пользователя.