亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Django Signal中未解決的錯誤

Django Signal中未解決的錯誤

DIEA 2021-03-31 18:14:24
我想在保存實例模型的同時用函數填充模型的artist字段。Albumpre_saveMusicianmodels.pyclass Musician(models.Model):    first_name = models.CharField(max_length=50)    last_name = models.CharField(max_length=50)    instrument = models.CharField(max_length=100)    def __str__(self):        return self.first_nameclass Album(models.Model):    artist = models.ForeignKey(Musician, on_delete=models.CASCADE)    name = models.CharField(max_length=100)    release_date = models.DateField(null=True,blank=True)    num_stars = models.IntegerField(null=True,blank=True)    def __str__(self):        return self.artist@receiver(pre_save,sender = Musician)def create_album(sender,instance,**kwargs):    sm = Album()    sm.artist = instance    sm.save()但是,當我嘗試從管理員創建音樂人模型的實例時,按保存按鈕時會顯示此錯誤。Exception Type: ValueError at /admin/sig/musician/add/Exception Value: save() prohibited to prevent data loss due to unsaved related object 'artist'.我不明白如何解決此 sm.save() 錯誤!請幫助我。
查看完整描述

1 回答

?
慕工程0101907

TA貢獻1887條經驗 獲得超5個贊

pre_save在 Musician實例保存到數據庫之前調用信號。但是您不能將未保存的實例設置為藝術家值。您應該將信號更改為post_save。在這種情況下,將在創建專輯時保存音樂家的信息:


@receiver(post_save,sender = Musician)

def create_album(sender,instance,**kwargs):

    sm = Album()

    sm.artist = instance

    sm.save()


查看完整回答
反對 回復 2021-04-20
  • 1 回答
  • 0 關注
  • 147 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號