python - Django - Model field to be the sum of other fields -
i trying make 1 field on model (quantidadeimprimir) sum of other fields on same model, going collected through form. trying use property method, when try submit form error: "field 'quantidadeimprimir' doesn't have default value". doing wrong? here's code:
model:
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 quantidade de estampas 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 django.http import httpresponseredirect django.template import context, loader django.forms.models import modelform_factory django.shortcuts import render_to_response django.template import requestcontext django.forms import modelform eventos.models import camisaevento 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))
template:
<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>
that's because in model set quantidadeimprimir
mandatory. when try save form error.
also having each size field in model bad idea. it's better represent through one-to-many relation.
Comments
Post a Comment