ValueError:无法分配“ 5687”:“ Table2.kid”必须是“ Table1”实例

时间:2019-03-22 09:19:59

标签: python django python-3.x django-models django-views

Table1,我从一个调用特定API的管理脚本中获取数据。 Table2还从Api获取数据。场景是xidkid相同,因此我实现了OneToOne关系,以便可以在{{1}的上下文中轻松从table1获取相关项目}。必须填充table2才能填充Table1,因为只有这样才能分配table1实例。 table2已存在于table1中,但仍然出现错误:

  

5687

ValueError: Cannot assign "5687": "Table2.kid" must be a "Table1" instance.

Models.py

这是我的脚本代码,与获取我的数据的两个管理命令相同。

class Table1(models.Model): xid = models.IntegerField(primary_key=True) amount = models.IntegerField() class Table2(models.Model): kid = models.OneToOneField(Table1,primary_key=True, on_delete=models.CASCADE) vid = models.IntegerField(null=True, blank=True) g_amount = models.IntegerField()

Management/commands/script.py

或者应该有一种方法我不需要拥有 """ API CODE """ data = { 'kid': kid, 'vid': vid, 'g_amount': g_amount } if Table2.objects.filter(vid=xid).exists() or Table1.objects.filter(xid=kid).exists() is False: continue else: # print(data) instance = Table2(**dataff) instance.save() 关系。使用Django的ORM,可以构建一个查询,该查询将把来自这两个表的实例组合到一个表中并将其放置在虚拟表中,这样我就不会失去ORM功能。

1 个答案:

答案 0 :(得分:0)

在声明数据字典之后,将应用对模型的条件检查。它将在if条件之后声明,以便可以使用条件保存字典。