我的一個Django應用程序有一個基於模型的ModelForm,該模型具有另一個應用程序的ForeignKey。代碼如下:表單上的Django錯誤 - ValueError:無法創建表單字段
應用 - EstoqueGeral - models.py:
class ItemEstoqueGeral(models.Model):
nome = models.CharField(max_length=200, verbose_name="Nome do Produto")
preco_de_compra = models.DecimalField(decimal_places=2, max_digits=6, verbose_name="Preço de Compra")
codigo_fornecedor = models.CharField(max_length=10, verbose_name="Código do Fornecedor")
peso_em_Kg = models.DecimalField(decimal_places=1, max_digits=6, verbose_name="Peso (Kg)")
quantidade_estoque_geral = models.IntegerField(verbose_name="Quantidade no Estoque Geral")
quantidade_minima_estoque_geral = models.IntegerField(verbose_name="Quantidade Mínima no Estoque Geral")
應用 - EstoqueLoja - models.py:
from django.db import models
import ast
from django import forms
from django.forms import ModelForm
class Loja(models.Model):
nome_loja = models.CharField(max_length=200, verbose_name="Nome da Loja")
def __unicode__(self):
return self.nome_loja
class itemEstoqueLoja(models.Model):
item_estoque = models.ForeignKey('EstoqueGeral.ItemEstoqueGeral', verbose_name="Item do Estoque")
loja = models.ForeignKey(Loja)
preco_loja = models.DecimalField(decimal_places=2, max_digits=6, verbose_name="Preço da Loja")
quantidade_estoque_loja = models.IntegerField(verbose_name="Quantidade no Estoque da Loja")
quantidade_minima_estoque_loja = models.IntegerField(verbose_name="Quantidade Mínima no Estoque da Loja")
def __unicode__(self):
return self.loja.nome_loja + " - " + self.item_estoque.nome
class itemEstoqueLojaForm(ModelForm):
class Meta:
model = itemEstoqueLoja
,我嘗試使用itemEstoqueLojaForm一個視圖,像這樣:
from django.shortcuts import render
from EstoqueLoja.models import Loja, itemEstoqueLoja, itemEstoqueLojaForm
from django.shortcuts import render
from django.http import HttpResponseRedirect, HttpResponse
from django.template import Context, loader
from django.forms.models import modelform_factory
from django.shortcuts import render_to_response, get_object_or_404
from django.template import RequestContext
def editar_estoque_loja(request, item_estoque_loja):
template = 'EstoqueLoja/editar_estoque_loja.html'
instance = itemEstoqueLoja.objects.get(pk=item_estoque_loja)
if request.method == 'POST':
form_itemestoqueloja = itemEstoqueLojaForm(request.POST, instance=instance)
if form_itemestoqueloja.is_valid():
form_itemestoqueloja.save()
return HttpResponseRedirect('/EstoqueLojas')
else:
form_itemestoqueloja = itemEstoqueLojaForm(instance=instance)
return render_to_response(template, { 'form_itemestoqueloja' : form_itemestoqueloja }, context_instance = RequestContext(request))
但是,當我嘗試訪問相應的url,我收到一個500內部服務器呃ROR。在我的日誌如下:
ValueError: Cannot create form field for 'item_estoque' yet, because its related model 'EstoqueGeral.ItemEstoqueGeral' has not been loaded yet
我已經檢查了我的設置,一切都很好。這兩個應用都在INSTALLED_APPS上,而EstoqueGeral在EstoqueLoja之前。有沒有人知道可能會導致這種錯誤的原因?
首先,您應該將表單放入與您的模型不同的文件中。我還沒有嘗試過你的代碼,但是你的問題可能是由此造成的。 – mp85 2014-12-04 02:18:59