Django: ValueError: Nie można utworzyć pola formularza, ponieważ powiązany z nim model nie został jeszcze załadowany
Mam problemy z projektem Django, nad którym pracuję. Mam teraz dwie aplikacje, które wymagają sporego nakładania się. Naprawdę zacząłem dopiero drugi projekt (tzwworkflow
) i próbuję stworzyć mój pierwszy formularz dla tej aplikacji. Moja pierwsza aplikacja nazywa siępo
. wworkflow
Aplikacja Mam klasę o nazwieWorkflowObject
, który (na razie) ma tylko jeden atrybut - klucz obcy do aPurchaseOrder
, który jest zdefiniowany wpo/models.py
. Zaimportowałem tę klasę za pomocąfrom po.models import PurchaseOrder
.
Próbuję utworzyć stronę, na której użytkownik tworzy nowyPurchaseOrder
. To działa dobrze (to ta sama forma, której użyłem w moimPurchaseOrder
aplikacji), a następnie używa tej instancji klasy do utworzeniaWorkflowObject
. Problem polega na tym, że otrzymuję błąd:ValueError: Cannot create form field for 'purchase' yet, because its related model 'PurchaseOrder' has not been loaded yet
. Naprawdę nie wiem od czego zacząć. To działało dobrze (pozwalając mi stworzyć nowyPurchaseOrder
i przekaż do adresu URL z kluczem podstawowym w adresie URL), dopóki nie dodam widoku, który pozwoli mi utworzyć nowyWorkflowObject
. Przedstawię tutaj ten konkretny widok:
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})
Linie kodu, które wydają się powodować błąd (lub przynajmniej jedna z linii pokazanych w traceback) to:
class WorkflowForm(ModelForm):
purchase = forms.ModelChoiceField(queryset = PurchaseOrder.objects.all())
EDYCJA: Wydaje mi się, że popełniłem bardzo błędny błąd i zawarłem nawiasy w mojej definicjiWorkflowObject
, to znaczy powiedziałempurchase=models.ForeignKey('PurchaseOrder')
, zamiastpurchase=models.ForeignKey(PurchaseOrder)