Django: ValueError: Невозможно создать поле формы, потому что связанная с ним модель еще не загружена
У меня возникли проблемы с проектом Django, над которым я работаю. Теперь у меня есть два приложения, которые требуют значительного перекрытия. Я действительно только начал второй проект (называетсяworkflow
) и я пытаюсь сделать свою первую форму для этого приложения. Мое первое приложение называетсяpo
, вworkflow
приложение у меня есть класс под названиемWorkflowObject
, который (на данный момент) имеет только один атрибут - внешний ключ кPurchaseOrder
, который определен вpo/models.py
, Я импортировал этот класс сfrom po.models import PurchaseOrder
.
То, что я пытаюсь сделать, это иметь страницу, где пользователь создает новыйPurchaseOrder
, Это прекрасно работает (это та же форма, которую я использовал в моемPurchaseOrder
приложение), а затем использует этот экземпляр класса для созданияWorkflowObject
, Проблема в том, что я получаю ошибку:ValueError: Cannot create form field for 'purchase' yet, because its related model 'PurchaseOrder' has not been loaded yet
, Я действительно не уверен, с чего начать. Это работало хорошо (позволяя мне создать новыйPurchaseOrder
и перешли к URL с его первичным ключом в URL), пока я не добавлю представление, которое должно позволить мне создать новыйWorkflowObject
, Я приведу это конкретное мнение здесь:
from django.http import HttpResponse, HttpResponseRedirect
from django.shortcuts import render, get_object_or_404
from django_tables2 import RequestConfig
from po.models import PurchaseOrderForm, PurchaseOrder
from workflow.models import POObject, WorkflowForm
def new2(request, number):
po=PurcchaseOrder.objects.get(pk=number)
if request.method == 'POST':
form = WorkflowForm(request.POST)
if form.is_valid():
new_flow = form.save()
return HttpResponse('Good')
else:
return render(request, 'new-workflow.html', {'form': form, 'purchase': po})
else:
form = WorkflowForm()
return render(request, 'new-workflow.html', {'form': form, 'purchase': po})
Строки кода, которые, кажется, вызывают ошибку (или, по крайней мере, одну из строк, показанных в трассировке):
class WorkflowForm(ModelForm):
purchase = forms.ModelChoiceField(queryset = PurchaseOrder.objects.all())
РЕДАКТИРОВАТЬ: Я, кажется, сделал очень ошибку Noob, и включил скобки в моем определенииWorkflowObject
то есть я сказалpurchase=models.ForeignKey('PurchaseOrder')
, вместоpurchase=models.ForeignKey(PurchaseOrder)