Database Django模型值误差

Database Django模型值误差,database,django,email,models,Database,Django,Email,Models,我在我的电子邮件服务器中访问电子邮件,获取每封电子邮件的正文,然后应用正则表达式查找填充Django模型所需的数据 除了一个字段作为外键链接到另一个模型字段外,所有这些都可以正常工作。尽管我的电子邮件中的值与我的其他型号中列出的值相同,但它失败了 错误: ValueError: Cannot assign "'Humanities'": "Subject.faculty" must be a "Faculty" instance. 例如,假设每个学校科目都必须是教员的一部分。当通过表格填充数据

我在我的电子邮件服务器中访问电子邮件,获取每封电子邮件的正文,然后应用正则表达式查找填充Django模型所需的数据

除了一个字段作为外键链接到另一个模型字段外,所有这些都可以正常工作。尽管我的电子邮件中的值与我的其他型号中列出的值相同,但它失败了

错误:

ValueError: Cannot assign "'Humanities'": "Subject.faculty" must be a "Faculty" instance.
例如,假设每个学校科目都必须是教员的一部分。当通过表格填充数据库时,对于学科的教员领域,我将菜单下拉至教员价值观/实例列表,因为在我的模型中定义了外键关系,即对于教员领域,我可以从人文、艺术、设计技术等中选择

但是,当我在电子邮件中找到“人文”值并尝试将其添加到数据库模型时,我得到了上面的错误

有人能解释一下吗?我是愚蠢还是不仅仅是一个价值错误对我来说,这两种情况下的价值都是相同的

多谢各位

根据要求提供更多代码:

class Faculty(models.Model):
  name = models.CharField(primary_key=True, max_length=50)
  leader = models.CharField(max_length=50)
  email = models.EmailField()
  mailing_list = models.ManyToManyField("Contact", null=True)

class Subject(models.Model):
  name = models.CharField(max_length=50)   
  faculty = models.ForeignKey(Faculty, to_field="name")
  faculty_head = models.CharField(max_length=50)

你的价值观是“人文学科”,也许你的意思是搜索人文学科(不带引号)。

你的价值观是“人文学科”,也许你的意思是搜索人文学科(不带引号)。

你需要先创建一个教员实例

faculty = Faculty(name='', leader='', email='')
faculty.save()

subject.faculty = faculty
subject.save()

您需要首先创建一个教员实例

faculty = Faculty(name='', leader='', email='')
faculty.save()

subject.faculty = faculty
subject.save()

听起来好像您正试图将字符串“Humantities”分配给
ForeignKey
关系。这没有道理。您需要查找或创建名为“Humanitics”的实际
教员
对象,并将其分配给
主题
。视图中类似的内容(取决于表单的设置):


听起来好像您正试图将字符串“Humantities”分配给
外键关系。这没有道理。您需要查找或创建名为“Humanitics”的实际
教员
对象,并将其分配给
主题
。视图中类似的内容(取决于表单的设置):



让我们看看您的模型和一些代码!请尝试在shell中重现该问题(./manage.py shell-别忘了安装ipython以获得更好的shell),然后在topicLet的“查看您的模型和一些代码”中发布shell会话!请尝试在shell中重现该问题(./manage.py shell-不要忘记安装ipython以获得更好的shell),然后在主题中发布shell会话是的,我确实这么认为,但我不明白“”是如何在第一时间到达的,因为在电子邮件中它不在引号中。当我在提交并将其保存到模型之前打印值时,没有引号,这就是我感到困惑的原因是,我确实这么认为,但我不明白“”是如何到达的首先,正如在电子邮件中一样,它不在报价单中。当我在提交并将其保存到模型之前打印值时,没有报价单,这就是为什么我对我的模型感到困惑的原因。Humanitites教员已经存在于我的模型中,这就是为什么我对我所犯的错误感到惊讶——因为具有相同值的教员实例已经存在于我的模型中。Humanitates faculty已经存在于我的模型中,这就是为什么我对我所犯的错误感到惊讶-因为具有相同值的faculty实例已经存在,所以我必须查找并直接引用数据库中已经存在的faculty对象,而不是简单地提供值。您将
feculty
(从数据库中创建或检索)的实例分配给
subject.feculty
字段,然后使用
subject.save()
将更改保存回数据库。我认为这可能是正确的方向,但为了澄清,我可以通过表单很好地填充模型,我把正则表达式应用到一封电子邮件中,然后尝试填充给我带来麻烦的模型,这就是我得到的值。Jango通过表单让你的生活变得轻松。它在幕后管理外键关系,同时在下拉列表中显示一个人性化字符串(“人文”),以描述FK与什么对象相关。当你手动搜索电子邮件并自己做时,你没有那种奢侈——你必须手动查找或创建代表“人文”的对象,并创建两者之间的关系——你已经一针见血了!现在你已经解释清楚了。现在一切正常。谢谢SirSo,我需要找到并直接引用数据库中已经存在的教员对象,而不是简单地提供值。您将
feculty
(从数据库中创建或检索)的实例分配给
subject.feculty
字段,然后使用
subject.save()
将更改保存回数据库。我认为这可能是正确的方向,但为了澄清,我可以通过表单很好地填充模型,我把正则表达式应用到一封电子邮件中,然后尝试填充给我带来麻烦的模型,这就是我得到的值。Jango通过表单让你的生活变得轻松。它在幕后管理外键关系,同时在下拉列表中显示一个人性化字符串(“人文”),以描述FK与什么对象相关。当你手动搜索电子邮件并自己做时,你没有那种奢侈——你必须手动查找或创建代表“人文”的对象,并创建两者之间的关系——你已经一针见血了!现在你已经解释清楚了。现在一切正常。谢谢你,先生