我试图创建一个对象并从输入字段分配一个外键,但出现一个奇怪的错误,我试图使用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实例。
答案 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}}对象。