ValueError:无法分配“””:“”必须是“”实例。错误

时间:2019-07-03 12:26:16

标签: django-models foreign-keys

我试图创建一个对象并从输入字段分配一个外键,但出现一个奇怪的错误,我试图使用id来分配它,但名称似乎没有用,任何帮助都将非常感激。 这是模型:

class Node(MPTTModel):
    parent              = TreeForeignKey('self', on_delete=models.CASCADE, blank=True, null=True, related_name='children')
    name                = models.TextField(blank=True, null=True)

这是表单字段:

<input  type="hidden" name="parent" value="{{ current_tree }}" />

这是视图:

get_node_parent = request.POST.get('parent', '').strip()

Node.objects.create(parent=get_node_parent)

每次尝试创建模型时,都会收到消息,提示它必须是Node实例。

1 个答案:

答案 0 :(得分:0)

您的Node构造函数期望一个Node对象作为父对象。由于您的parent包含该.name的{​​{1}}字段,因此您首先需要获取该节点,例如:

Node

因此,我们首先获取parent_name = request.POST.get('parent') node_parent = None if parent_name is not None: node_parent = Node.objects.get(name=parent_name) Node.objects.create(parent=node_parent)的值。如果存在这样的值,则我们使用'parent'来获取该名称的给定Node。然后,我们可以使用给定的Node.objects.get(name=...)创建新的Node

请注意,您可能还想设置一个名称,并将name字段设置为name,因为否则使用unique=True不足以“标识” {{ 1}}对象。

相关问题