簡體   English   中英

無法分配“'somedata'”:“otherdatal”必須是“”實例。`

[英]Cannot assign "'somedata'": "otherdatal" must be a "" instance.`

是否可以將會話值插入外鍵?

我有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

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

我將來自上述模型的電子郵件作為會話並嘗試將此會話值放入另一個模型的外鍵字段,但在這里我收到如下錯誤:

無法分配“'cb@gmail.com'”:“canDetails.candEmail”必須是“候選”實例。

我試圖立即從候選模型和 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)
    ...

如果您只有電子郵件,那么您可以使用它來查找它屬於哪個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()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM