我有一个concat
类,其中包含未知数量的Test
和WriteData
个对象:
VerifyData
当我尝试填充数据库时出现以下错误:
class Test(models.Model):
objective = models.ForeignKey(Objective)
test_at = models.CharField(max_length=NAME_MAX_LENGTH, unique=True)
description = models.CharField(max_length=DESCRIPTION_MAX_LENGTH, default="")
class WriteData(models.Model):
test = models.ForeignKey(Test)
write_variable = models.CharField(max_length=NAME_MAX_LENGTH, default="")
write_value = models.CharField(max_length=NAME_MAX_LENGTH, default="")
class VerifyData(models.Model):
test = models.ForeignKey(Test)
verify_variable = models.CharField(max_length=NAME_MAX_LENGTH, default="")
relational_operator = models.CharField(max_length=NAME_MAX_LENGTH, default="")
verify_value = models.CharField(max_length=NAME_MAX_LENGTH, default="")
verify_tolerance = models.CharField(max_length=NAME_MAX_LENGTH, default="")
我怀疑这是因为django.core.exceptions.FieldError: Cannot resolve keyword 'verify_variable' into field. Choices are: id, test, test_id, write_value, write_variable
只有一个关系,即test
。解决方案是使用多对多关系吗?多对多感觉不对,因为这些write_data
中的每一个都是唯一的,只会放在一个write_data/verify_data
中。我该如何解决这个问题?
我看了看: Can a single model object be a parent of multiple child objects?,但这是另一种情况 - 我想在这些类之间添加关系,而不是它们的子类。
Here是填充人口脚本的pastebin链接。
答案 0 :(得分:1)
在你的脚本中你有一个方法add_verify_data
(第148行):
def add_verify_data(test, v_var, rel_op, v_val, v_tol):
vd = WriteData.objects.get_or_create(
test=test,
verify_variable=v_var,
relational_operator=rel_op,
verify_value=v_val,
verify_tolerance=v_tol,
)[0]
vd.save()
return vd
似乎是使用WriteData
,verify_variable
,relational_operator
和verify_value
创建verify_tolerance
模型的实例,但此模型没有这些字段,仅限:write_variable
和write_value
。