2013-08-12 2 views
0

내 모델 (quantidadeImprimir)에 하나의 필드를 양식을 통해 수집 될 동일한 모델의 다른 필드의 합계로 만들려고합니다. 메서드를 사용하여 속성을 사용하려고하지만 폼을 전송하려고 할 때 오류가 발생합니다. "필드 'quantidadeImprimir'에 기본값이 없습니다." 내가 도대체 ​​뭘 잘못하고있는 겁니까? 여기 내 코드는 다음과 같습니다Django - 다른 필드의 합계가 될 모델 필드

모델 :

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) 

view.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)) 

템플릿 : 모델에 당신이 강제로 quantidadeImprimir를 설정하기 때문이다

<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> 

답변

0

. 그런 다음 양식에서 저장하려고하면 오류가 발생합니다.

또한 모델의 각 필드를 필드로 사용하는 것은 좋지 않습니다. 일대 다 (one-to-many) 관계를 통해 표현하는 것이 더 좋습니다.

+0

좀 더 자세하게 설명해 주실 수 있습니까? 나는 더 많은 것을 찾았지만 성공을 거두지 못했다. 그 목표 (모델의 다른 필드의 합계 인 템플릿에 표시 할 필드)를 어떻게 달성 할 수 있습니까? – fgalvao

관련 문제