python - ValueError:无法分配“5687”:“Table2.kid”必须是“Table1”实例
问题描述
Table1
我从调用某个 API 的管理脚本中获取数据。
Table2
还从 Api 获取数据。场景是相同的,所以我已经实现了一个xid
关系,以便我可以轻松地从. 必须填充才能填充,因为只有这样才能完成实例的分配。已经存在于 table1 但我仍然收到错误:kid
OneToOne
table1
table2
Table1
table1
table2
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()
或者应该有一种方法我不需要有OneToOne
关系。使用 Django 的 ORM 可以构造一个查询,它将这两个表中的实例组合在一起并将其放置在一个虚拟表中,这样我就不会失去 ORM 功能。
解决方案
在声明数据字典后应用模型字段的条件检查。它将在 if 条件之后声明,以便可以使用条件保存字典。