ValueError: Невозможно назначить "''": "" должен быть "" экземпляр. ошибка - PullRequest
1 голос
/ 03 июля 2019

Я пытаюсь создать объект и назначить внешний ключ из поля ввода, но получаю странную ошибку, я пытался назначить его с помощью идентификатора, имени, но, похоже, ничего не работает, любая помощь будеточень признателен.Это модель:

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)

Каждый раз, когда я пытаюсь создатьМодель У меня есть сообщение, что это должен быть экземпляр узла.

1 Ответ

0 голосов
/ 03 июля 2019

Ваш конструктор Node ожидает объект Node как родительский. Поскольку ваш parent содержит поле .name этого Node, вам сначала нужно извлечь этот узел, например:

parent_name = request.POST.get('parent')

node_parent = None
if parent_name is not None:
    node_parent = Node.objects.<b>get(name=</b>parent_name<b>)</b>

Node.objects.create(parent=<b>node_parent</b>)

Таким образом, мы сначала получаем значение для 'parent'. Если такое значение существует, мы получаем Node для этого имени с Node.objects.get(name=...). Затем мы можем создать новый Node с заданным name.

Обратите внимание, что вы, вероятно, также хотите задать имя и задать поле name unique=True, так как в противном случае использование name будет недостаточно для "идентификации" объекта Node.

...