【问题标题】:Django Can't save record with ForeinKeyDjango无法使用外键保存记录
【发布时间】:2020-05-01 11:08:12
【问题描述】:

我熟悉 Django,并且在我的一个网站中使用 Django 框架(2.2.2),但是我遇到了一个奇怪的问题,即使用外键保存记录:

我有以下两个模型

class quick_note(models.Model):
   note_id = models.AutoField(primary_key=True)
   meeting_date = models.DateField(max_length=55)
   title = models.TextField(blank = True,null=True)
   headline = models.TextField(blank = True,null=True)

class quick_note_details(models.Model):
   meeting_id = models.ForeignKey(quick_note,on_delete = models.CASCADE)
   summary = models.TextField(default='',null=True) 

以下是我用来保存的代码:

quick_note_details_data = quick_note_details(summary = summary_data,meeting_id = 1)
quick_note_details_data.save()

使用这个我得到以下错误:

ValueError:无法分配“2”:“quick_note_details.meeting_id”必须是“quick_note”实例。

然后,我尝试了以下问题中建议的以下方法,

Django: ValueError when saving an instance to a ForeignKey Field

quick_note_obj  = quick_note.objects.get(note_id = note_id)     
quick_note_details_data = quick_note_details(summary = summary_data,meeting_id = quick_note_obj)
    quick_note_details_data.save()

使用这个我得到以下错误:

django.db.utils.ProgrammingError:关系“website_quick_note_details”的列“meeting_id_id”不存在 第 1 行:插入“website_quick_note_details”(“meeting_id_id”,“...

我在模型中的任何地方都没有像 meeting_id_id 这样的列,那么为什么会出现此错误?

找了好久,没找到解决办法,

希望我能在这里得到帮助。

【问题讨论】:

    标签: python django django-models python-3.6


    【解决方案1】:

    将 meeting_id 更改为 meeting_id_id ,尝试关注 quick_note_details_data = quick_note_details(summary = summary_data,meeting_id_id = 1)

    【讨论】:

      【解决方案2】:

      所以,我几天前就得到了答案,所以决定回答,这样可以帮助像我这样的人,

      基本上,Django 会在 foreign_key 列上附加一个后缀,

      例如,如果您的列名称是 note ,Django 将假定它为 note_id,

      所以,为了避免这种情况,我只做了以下操作:

      note_id = models.ForeignKey(quick_note,on_delete = models.CASCADE,db_column='note_id')
      

      通过使用 db_column 属性,现在外键将引用为 note_id,

      这解决了我的问题。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-11-16
        • 1970-01-01
        • 1970-01-01
        • 2011-02-24
        • 2011-04-26
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多