2013-06-25 36 views
0

我已经通过了一些可能的解决方案,但没有成功。我与estoque应用中的以下模型:Django - 全球名称'modelo'未定义

class Produto(models.Model): 
    CAMISA = "CM" 
    QUADRO = "QD" 
    CANECA = 'CN' 
    ESCOLHAS_PRODUTO = (
     (CAMISA, 'Camisa'), 
     (QUADRO, 'Quadro'), 
     (CANECA, 'Caneca'), 
    ) 
    tipo = models.CharField(max_length = 40, 
          choices=ESCOLHAS_PRODUTO, 
          default=CAMISA) 

class Camisa(Produto): 

    # the choices here are very long, so i omitted them 

    cor = models.CharField(max_length = 40, 
            choices=CORES_CAMISA, 
            ) 
    modelo = models.CharField(max_length = 50, 
           choices=MODELO_CAMISA, 
          ) 
    tamanho= models.CharField(max_length = 50, 
           choices=TAMANHO_CAMISA, 
          ) 
    quantidade = models.IntegerField() 

    def __unicode__(self): 
     return self.modelo 

然后我有一个表格来收集一些数据,并将其保存在数据库中。但由于它是一个库存控制应用程序,如果记录已经存在,我希望应用程序更新数量。如果它不存在,我希望它创建记录。我的看法代码如下:

def index(request): 
    # template = loader.get_template('recados/index.html') 
    produtos_estoque = Camisa.objects.all() 
    template = 'estoque/index.html' 
    if request.method == 'POST': 
     form = CamisaForm(request.POST) 
     if form.is_valid(): 
      produto_atualizar = Camisa.objects.get(modelo = request.POST[modelo], cor = request.POST[cor], tamanho = request.POST[tamanho]) 
      if produto_atualizar: 
       produto_atualizar.quantidade = request.POST[quantidade] 
      else: 
       produto_atualizar = form.save() 
      return HttpResponseRedirect('') 
    else: 
     form = CamisaForm() 
    return render_to_response(template, { 'form': form, 'produtos_estoque': produtos_estoque }, context_instance=RequestContext(request)) 

从错误的轨迹如下:

NameError at /estoque/ 

global name 'modelo' is not defined 

有人可以帮助我吗?

+0

一般建议:你显然有很好的英语技巧 - 你应该尝试养成[用英文编码]的习惯(http://www.codinghorror.com/blog/2009/03/the-ugly-美国-programmer.html)。 –

+0

哦,谢谢你的建议。我是巴西人,因为我只是学习和做一些应用程序来激励自己学习,所以我从来没有想过这件事。但它是有道理的。 – fgalvao

回答

2

该错误可能是在这里:

modelo = request.POST[modelo] 

没有modelo变量,所以很有可能你的意思是这样的:

modelo = request.POST['modelo'] 

这同样适用于其他的字典访问在该行的代码。

+0

非常感谢,现在正在工作。 – fgalvao