Пытаюсь сохранить dict в моей модели, но получаю ошибку из-за внешнего ключа
я не могу понять, как решить эту проблему. я пытаюсь сохранить dict, но получаю ошибку из-за наличия внешнего ключа в моей модели leave, как я могу решить эту проблему.
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"]
final_data= leave(**serializer)
final_data.save()
return Response(data=serializer)
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)
Сообщение об ошибке говорит о том, что вы пытаетесь присвоить hostel_name
как строку/поле. В соответствии с вашей моделью, это должен быть объект hostel_manager
.
Не уверен, как выглядит ваш POST-сериализатор или полезная нагрузка, но вы, вероятно, захотите установить поле hostel_manager_pk
в PK объекта kund kund bhawan.