0

この問題に対するいくつかの可能な答えを試しましたが、成功しませんでした。私はestoqueアプリで次のモデルを持っています:

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

誰か助けてくれませんか?

4

1 に答える 1

2

エラーはおそらくここにあります:

modelo = request.POST[modelo]

変数がないmodeloため、おそらく次のことを意味します。

modelo = request.POST['modelo']

同じことが、そのコード行の他のディクショナリ アクセスにも当てはまります。

于 2013-06-25T00:45:23.010 に答える