Django - 将多个子项添加到模型中

时间:2016-08-04 14:52:58

标签: python django database django-models

我有一个concat类,其中包含未知数量的TestWriteData个对象:

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链接。

1 个答案:

答案 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

似乎是使用WriteDataverify_variablerelational_operatorverify_value创建verify_tolerance模型的实例,但此模型没有这些字段,仅限:write_variablewrite_value