私は django rest フレームワークを学習していますが、ForeignKey モデルとシリアライザーに問題があるようです。2 つのモデルと 2 つのシリアライザーがあります
モデル
class Clients(models.Model):
client_public_key = models.CharField(max_length=100, default=generate_client_public_key, unique=True)
client_name = models.CharField(max_length=100, unique=True, null=False)
client_name_abbr = models.CharField(max_length=100, unique=True, null=True)
created_by = models.IntegerField(default=1, null=False) #Has to be changed to foreign key
created_at = models.DateTimeField(auto_now_add=True, null=False)
class Meta:
ordering = ["client_name"]
class Users(models.Model):
client = models.ForeignKey(Clients, on_delete=models.CASCADE)
user_public_key = models.CharField(max_length=100, null=False, default=generate_client_public_key, unique=True)
first_name = models.CharField(max_length=100, null=False)
last_name = models.CharField(max_length=100, null=False)
email = models.CharField(max_length=100, null=False, unique=True)
cell = models.IntegerField( null=True)
support_department = models.CharField(max_length=50, null=False)
password = models.CharField(max_length=150, null=False)
user_status = models.IntegerField(null=False)
password_changed = models.IntegerField(default=0, null=False)
last_login = models.DateTimeField(null=True)
created_by = models.IntegerField(default=1, null=False) #Has to be changed to foreign key
created_at = models.DateTimeField(auto_now_add=True, null=False)
class Meta:
ordering = ["first_name"]
シリアライザ
class ClientSerializer(serializers.ModelSerializer):
class Meta:
model = Clients
fields = '__all__'
read_only_fields = ('id','client_public_key')
class UserSerializer(serializers.ModelSerializer):
# client = ClientSerializer()
# client = serializers.StringRelatedField()
class Meta:
model = Users
depth = 1
fields = '__all__'
read_only_fields = ('id','user_public_key')
で投稿
def create_user(request):
serializer = UserSerializer(data=request.data)
if serializer.is_valid():
serializer.save()
try:
queryset = Users.objects.get(email=serializer.data['email'])
content = {'status_response': 'User Created Successfully'}
return Response(content, status=status.HTTP_201_CREATED)
except Users.DoesNotExist:
content = {'status_response': 'User Not Created'}
return Response(content, status=status.HTTP_404_NOT_FOUND)
content = {'status_response': 'User Already Exist'}
return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
問題は、UserSerializer に depth=1 を追加すると、データを投稿するときに(1048、"Column 'client_id' cannot be null")エラーが発生することです。私は何を間違っていますか?