/ / Django POSTは非ヌル制約user_idに違反しています-django、django-forms、django-rest-framework

Django POSTはnullでない制約に違反するuser_id - django、django-forms、django-rest-framework

ここでも私の質問に対する答えを見つけるのに苦労しています。そのような投稿があることは知っていますが、まだわかりません。

「user_profile」にPOSTしようとするとエラーが発生します。以下はエラーとコードです。

django.db.utils.IntegrityError: null value in column "user_id" violates not-null constraint

django.contrib.auth.models import Userからのforiegnkeyを持つmodels.py

from django.db import models
from django.contrib.auth.models import User

class UserProfile(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
user = models.OneToOneField(User, on_delete=True)
start_date = models.DateTimeField
last_active_date = models.DateTimeField
alias_name = models.CharField(max_length=30)
city = models.CharField(max_length=30)
state = models.CharField(max_length=30)
zipcode = models.CharField(max_length=5, null=True)

serializers.py

from rest_framework import serializers
from api.models import UserProfile

class UserProfileSerializer(serializers.Serializer):
id = serializers.IntegerField(read_only=True)
orientation = serializers.CharField(required=False, allow_blank=True, max_length=100)

def create(self, validated_data):

return UserProfile.objects.create(**validated_data)

userprofile.py getは正常に動作しますが、「null以外の制約に違反しています」という投稿

@csrf_exempt
def user_profile_list(request):
if request.method == "GET":
orientation = UserProfile.objects.all().values()
list2 = list(orientation)
return JsonResponse(list2, safe=False)

elif request.method == "POST":
data = JSONParser().parse(request)
serializer = UserProfileSerializer(data=data)
if serializer.is_valid():
serializer.save()
return JsonResponse(serializer.data, status=201)
return JsonResponse(serializer.errors, status=400)

回答:

回答№1は1

read_only = Trueがあるため、UserProfileSerializerのPOSTでidは使用できません。 モデルシリアライザーが役立ちます。 ドキュメント