leave类型的对象是不可JSON序列化的



{我不知道如何解决这个问题。我试图保存字典购买创建模型实例,但由于我的休假模型中的外键通过一对多关系连接到旅馆经理}

我已经解决了这个错误,但得到了新的错误类型的对象leave不是JSON序列化我不知道如何解决这个

在我的数据库中,我通过请求获得的数据被保存,但我通过使用jwt令牌从其他表获得的数据没有被保存

final_data= leave(**serializer)

views.py

class leaveview(APIView):
def post(self,request):
token = request.data['jwt']
if not token:
raise AuthenticationFailed('Unauthenticated')

try:
payload = jwt.decode(token,'secret',algorithms=['HS256'])
except jwt.ExpiredSignatureError:
raise AuthenticationFailed('Unauthenticated')

user=User.objects.filter(id=payload['id']).first()
serializer1=UserSerializers(user).data

serializer2 = leaveSerializers(data=request.data)
serializer2.is_valid(raise_exception=True)
serializer={**serializer1,**request.data}

del serializer["jwt"]
loc = hostel_manager.objects.get(hostel = serializer['hostel_name'])
del serializer['hostel_name']
del serializer['password']
a=leave.objects.create(**serializer,**{'hostel_name' : loc} )


a=leaveSerializers(a)
return Response(a.data)

models.py


class hostel_manager(models.Model):
hostel = models.CharField(max_length=100,primary_key=True)

class leave(models.Model):
name=models.CharField(max_length=100,null = True)
father_name=models.CharField(max_length=100,null=True)


branch=models.CharField(max_length=40,null=True)
coer_id=models.CharField(max_length=12,unique=True,null=True)

hostel_name = models.ForeignKey(hostel_manager,on_delete=models.CASCADE)
room_no = models.CharField(max_length=10)
where_to = models.CharField(max_length=100)
reason = models.CharField(max_length=300)
start_date = models.CharField(max_length = 100,null=True)
end_date = models.CharField(max_length=100,null=True)
phone_regex=RegexValidator(regex=r'^+?1?d{9,15}$', message="Phone number must be entered in the format: '+9999999999'. Up to 12 digits allowed.")
phone_number = models.CharField(validators=[phone_regex], max_length=17)

这是我得到的错误

File "d:pythonlibjsonencoder.py", line 179, in default
raise TypeError(f'Object of type {o.__class__.__name__} '
TypeError: Object of type leave is not JSON serializable

serializer.py

class leaveSerializers(serializers.ModelSerializer):
class Meta:
model = leave
fields = ['id','hostel_name','room_no','where_to','reason','phone_number','start_date','end_date','name','father_name','branch','coer_id']

class hostelmanagerSerializers(serializers.ModelSerializer):
class Meta:
model = hostel_manager
fields = ['hostel']

错误消息提示您正在尝试将hostel_name分配为字符串/CharField。根据你的模型,它需要是一个hostel_manager对象。

不确定您的POST序列化器或有效负载看起来像什么,但您可能希望将hostel_manager_pk字段设置为对象的PK。