Невозможно присвоить "'somedata'": "otherdatal" должен быть экземпляром "".
возможно ли вставить значение сессии во внешний ключ? у меня есть 2 модели
class candidate(models.Model):
fname=models.CharField("First name ",max_length=20,default="")
lname=models.CharField("Last name ",max_length=20,default="")
email=models.EmailField("Email ",max_length=254,primary_key=True)
password=models.CharField("Password ",max_length=100,default="")
def __str__(self):
return self.email #self.fname+" " +self.lname
здесь я принимаю email из вышеуказанной модели в качестве сессии и пытаюсь поместить это значение сессии в поле внешнего ключа следующей модели
class canDetails(models.Model):
candEmail=models.ForeignKey(candidate,on_delete=models.CASCADE)
location=models.CharField("location ",max_length=30)
role=models.CharField("role ",max_length=20)
cv=models.FileField(upload_to="media/canDetails/")
def __str__(self):
return self.candEmail
но здесь я получаю ошибку типа Cannot assign "'cb@gmail.com'": "canDetails.candEmail" must be a "candidate" instance.
я пытаюсь получить все детали из модели кандидата и модели candDetails одновременно, поэтому я использую pf и fk здесь, так что это правильный путь, которым я следую...? Как я могу справиться с этим? Любые предложения, пожалуйста?
Модель canDetails
должна знать, к какой candidate
она принадлежит, поэтому поле Foreingkey
должно быть экземпляром candidate
(в базе данных хранится значение PK). Я настоятельно рекомендую, как и в документации Django, называть поле candidate
и имена моделей заглавными буквами, для большей ясности.
class Candidate(models.Model):
...
class CanDetails(models.Model):
candidate = models.ForeignKey(Candidate, on_delete=models.CASCADE)
...
Если у вас есть только email, то вы можете использовать его для поиска того, к какому Candidate
он принадлежит, получить этот экземпляр и присвоить его CanDetails
. Например:
try:
the_candidate = Candidate.objects.get(email='cb@gmail.com')
except (Candidate.DoesNotExist, Candidate.MultipleObjectsReturned):
# raise error or exit
return
det = CanDetails()
det.candidate = the_candidate
...
det.save()