0

モデル (quantidadeImprimir) の 1 つのフィールドを、フォームを介して収集される同じモデルの他のフィールドの合計にしようとしています。メソッドでプロパティを使用しようとしていますが、フォームを送信しようとすると、「フィールド 'quantidadeImprimir' にデフォルト値がありません」というエラーが表示されます。私は何を間違っていますか?これが私のコードです:

モデル:

quantidade_PMasc = models.IntegerField()
quantidade_MMasc = models.IntegerField()
quantidade_GMasc = models.IntegerField()
quantidade_GGMasc = models.IntegerField()
quantidade_XGGMasc = models.IntegerField()
quantidade_PFem = models.IntegerField()
quantidade_MFem = models.IntegerField()
quantidade_GFem = models.IntegerField()
quantidade_GGFem = models.IntegerField()
quantidade_02Inf = models.IntegerField()
quantidade_04Inf = models.IntegerField()
quantidade_06Inf = models.IntegerField()
quantidade_08Inf = models.IntegerField()
quantidade_10Inf = models.IntegerField()
quantidade_12Inf = models.IntegerField()
quantidade_14Inf = models.IntegerField()    

def _quantidade_imprimir(self):
    "Retorna a quantidade de estampas a ser impressa para esta camisa neste evento"
    return (self.quantidade_PMasc + self.quantidade_MMasc + self.quantidade_GMasc
            + self.quantidade_GGMasc + self.quantidadeXGGMasc + self.quantidade_PFem
            + self.quantidade_MFem + self.quantidade_GFem + self.quantidade_GGFem +
            self.quantidade_02Inf + self.quantidade_04Inf + self.quantidade_06Inf +
            self.quantidade_08Inf + self.quantidade_10Inf + self.quantidade_12Inf +
            self.quantidade_14Inf)

quantidadeImprimir = property(_quantidade_imprimir)

ビュー.py:

from django.core.urlresolvers import reverse
from django.http import HttpResponseRedirect
from django.template import Context, loader
from django.forms.models import modelform_factory
from django.shortcuts import render_to_response
from django.template import RequestContext
from django.forms import ModelForm
from eventos.models import CamisaEvento
from eventos.models import CamisaEventoForm

def index(request):
    camisas_evento = CamisaEvento.objects.all()

    if request.method == 'POST':
        form = CamisaEventoForm(request.POST)
        if form.is_valid():
            try:                
                camisa_levar_evento = CamisaEvento.objects.get(estampa=form.cleaned_data.get('estampa'), cor=form.cleaned_data.get('cor'))
                quantidade_PMasc = form.cleaned_data.get('quantidade_PMasc')
                quantidade_MMasc = form.cleaned_data.get('quantidade_MMasc')
                quantidade_GMasc = form.cleaned_data.get('quantidade_GMasc')
                quantidade_GGMasc = form.cleaned_data.get('quantidade_GGMasc')
                quantidade_XGGMasc = form.cleaned_data.get('quantidade_XGGMasc')
                quantidade_PFem= form.cleaned_data.get('quantidade_PFem')
                quantidade_MFem= form.cleaned_data.get('quantidade_MFem')
                quantidade_GFem= form.cleaned_data.get('quantidade_GFem')
                quantidade_GGFem= form.cleaned_data.get('quantidade_GGFem')
                quantidade_02Inf = form.cleaned_data.get('quantidade_02Inf')
                quantidade_04Inf = form.cleaned_data.get('quantidade_04Inf')
                quantidade_06Inf = form.cleaned_data.get('quantidade_06Inf')
                quantidade_08Inf = form.cleaned_data.get('quantidade_08Inf')
                quantidade_10Inf = form.cleaned_data.get('quantidade_10Inf')
                quantidade_12Inf = form.cleaned_data.get('quantidade_12Inf')
                quantidade_14Inf = form.cleaned_data.get('quantidade_14Inf')
                camisa_levar_evento.quantidade_PMasc = quantidade_PMasc
                camisa_levar_evento.quantidade_MMasc = quantidade_MMasc
                camisa_levar_evento.quantidade_GMasc = quantidade_GMasc
                camisa_levar_evento.quantidade_GGMasc = quantidade_GGMasc
                camisa_levar_evento.quantidade_XGGMasc = quantidade_XGGMasc
                camisa_levar_evento.quantidade_PFem = quantidade_PFem
                camisa_levar_evento.quantidade_MFem = quantidade_MFem
                camisa_levar_evento.quantidade_GFem = quantidade_GFem
                camisa_levar_evento.quantidade_GGFem = quantidade_GGFem
                camisa_levar_evento.quantidade_02Inf = quantidade_02Inf
                camisa_levar_evento.quantidade_04Inf = quantidade_04Inf
                camisa_levar_evento.quantidade_06Inf = quantidade_06Inf
                camisa_levar_evento.quantidade_08Inf = quantidade_08Inf
                camisa_levar_evento.quantidade_10Inf = quantidade_10Inf
                camisa_levar_evento.quantidade_12Inf = quantidade_12Inf
                camisa_levar_evento.quantidade_14Inf = quantidade_14Inf                
                camisa_levar_evento.save()
            except CamisaEvento.DoesNotExist:
                camisa_levar_evento = form.save()
            return HttpResponseRedirect('')
    else:
        form = CamisaEventoForm()
        return render_to_response('eventos/index.html', { 'form': form, 'camisas_evento': camisas_evento,}
                                  , context_instance=RequestContext(request))

テンプレート:

<form method="post" action="">
    {% csrf_token %}            
    <!-- {{ form.as_table }} -->
    <table class="form_eventos">
        <tr>
            <td>Estampa: {{ form.estampa }}</td>
            <td>Cor: {{ form.cor }}</td>
        </tr>
        <tr>
            <td class="subtitulo-form">Masculinas</td>
        </tr>
        <tr>
            <td>Quantidade P Masc.: {{ form.quantidade_PMasc }}</td>
            <td>Quantidade M Masc.: {{ form.quantidade_MMasc }}</td>
            <td>Quantidade G Masc.: {{ form.quantidade_GMasc }}</td>
        </tr>
        <tr>
            <td>Quantidade GG Masc.: {{ form.quantidade_GGMasc }}</td>
            <td>Quantidade XGG Masc.: {{ form.quantidade_XGGMasc }}</td>                    
        </tr>
        <tr>
            <td class="subtitulo-form">Femininas</td>
        </tr>
        <tr>
            <td>Quantidade P Fem.: {{ form.quantidade_PFem }}</td>
            <td>Quantidade M Fem.: {{ form.quantidade_MFem }}</td>
            <td>Quantidade G Fem.: {{ form.quantidade_GFem }}</td>
        </tr>
        <tr>
            <td>Quantidade GG Masc.: {{ form.quantidade_GGFem }}</td>                    
        </tr>
        <tr>
            <td class="subtitulo-form">Infantis</td>
        </tr>
        <tr>
            <td>Quantidade 2 Anos: {{ form.quantidade_02Inf }}</td>
            <td>Quantidade 4 Anos: {{ form.quantidade_04Inf }}</td>
            <td>Quantidade 6 Anos: {{ form.quantidade_06Inf }}</td>
        </tr>
        <tr>
            <td>Quantidade 8 Anos: {{ form.quantidade_08Inf }}</td>
            <td>Quantidade 10 Anos: {{ form.quantidade_10Inf }}</td>
            <td>Quantidade 12 Anos: {{ form.quantidade_12Inf }}</td>
        </tr>
        <tr>
            <td>Quantidade 14 Anos: {{ form.quantidade_14Inf }}</td>
        </tr>                
    </table>
    <br /><input class="button" type="submit" value="Incluir Estampa" />
</form>
4

1 に答える 1

0

これは、モデルquantidadeImprimirで必須に設定したためです。その後、フォームから保存しようとすると、そのエラーが発生します。

また、モデルのフィールドとして各サイズを持つことは悪い考えです。1 対多の関係で表現する方が適切です。

于 2013-08-13T00:17:43.113 に答える