我试图让我的模型上的一个字段(quantidadeImprimir)成为同一模型上其他一些字段的总和,这些字段将通过表单收集。我试图使用属性与方法,但当我尝试提交表单时,我得到错误:“字段'quantdadeImprimir'没有默认值”。我究竟做错了什么?这是我的代码:
型号:
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))
模板:
<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 :(得分:0)
这是因为在您的模型中,您将quantidadeImprimir
设置为必填项。当您尝试从表单中保存它时,您会收到该错误。
将每个尺寸作为模型中的字段也是一个坏主意。通过一对多关系来表示这一点会更好。