Django models ValueError:无法分配"''&引用;:&引用&引用;必须是一个"&引用;例如。错误

Django models ValueError:无法分配"''&引用;:&引用&引用;必须是一个"&引用;例如。错误,django-models,foreign-keys,Django Models,Foreign Keys,我试图创建一个对象,并从输入字段分配一个外键,但我得到了一个奇怪的错误,我试图使用id分配它,名称,但似乎没有任何工作,任何帮助将不胜感激。 这就是模型: class Node(MPTTModel): parent = TreeForeignKey('self', on_delete=models.CASCADE, blank=True, null=True, related_name='children') name =

我试图创建一个对象,并从输入字段分配一个外键,但我得到了一个奇怪的错误,我试图使用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 }}" />

每次尝试创建模型时,我都会收到一条消息,即它必须是一个节点实例。

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

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\u name=request.POST.get('parent'))
节点\父节点=无
如果父项名称不是“无”:
node\u parent=node.objects.get(name=parent\u name)
Node.objects.create(parent=Node\u parent)
因此,我们首先检索
'parent'
的值。如果存在这样的值,那么我们就用
Node.objects.get(name=…)
为该名称获取给定的
节点。然后我们可以使用给定的
名称创建新的
节点


请注意,您可能也想设置一个名称,并使
名称
字段
唯一=True
,因为否则使用
名称
将不足以“识别”
节点
对象。

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

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\u name=request.POST.get('parent'))
节点\父节点=无
如果父项名称不是“无”:
node\u parent=node.objects.get(name=parent\u name)
Node.objects.create(parent=Node\u parent)
因此,我们首先检索
'parent'
的值。如果存在这样的值,那么我们就用
Node.objects.get(name=…)
为该名称获取给定的
节点。然后我们可以使用给定的
名称创建新的
节点


请注意,您可能还想设置一个名称,并使
名称
字段
唯一=True
,因为否则使用
名称
将不足以“识别”节点
对象。

为什么这是一个奇怪的错误?
父节点
应该是
节点
(因为它是一个fk to
节点
),那么你为什么希望使用字符串呢?嘿,威廉,我没有使用字符串“get\u Node\u parent”的输出实际上是一个节点,所以我不明白为什么会出现这个错误。但是
POST
本质上是一个将字符串映射到字符串的字典,因此,
get\u node\u parent
是一个字符串。我想我在这里遗漏了一些东西,你知道我如何实现我的目标吗,因为我是django的新手,而且我很难让它工作。确切地说,
{current\u tree}}
,你的
节点的名称是什么?这是主键?为什么这是一个奇怪的错误?
父节点
应该是
节点
(因为它是一个fk to
节点
),那么你为什么希望使用字符串呢?嘿,威廉,我没有使用字符串“get\u Node\u parent”的输出实际上是一个节点,所以我不明白为什么会出现这个错误。但是
POST
本质上是一个将字符串映射到字符串的字典,因此,
get\u node\u parent
是一个字符串。我想我在这里遗漏了一些东西,你知道我如何实现我的目标吗,因为我是django的新手,而且我很难让它工作。确切地说,
{current\u tree}}
,你的
节点的名称是什么?这是主键?谢谢你的回答,这正是我错过的。否则,我已经使用id查询了节点\父节点,因此我不必将名称设置为unique true。谢谢您的回答,这正是我缺少的。否则,我将使用id查询节点\父节点,因此我不必将名称设置为unique true。