hello list i ran into some weird stuff and neither i nor 2 gentle folks down at the irc-chat could find any obvious problems. task should have been easy: calculate some special initial data and present it as initials in a form. the form is showed correctly, and the right values are printed in console.. and, of course, there is no error raised..
thank you for any hints! i've been stuck here.... gabriel # models.py class AmountModel(models.Model): class Meta: abstract = True currencies = ( ('CHF', "Swiss Francs"), ('EUR', "Euros"), ) amount = models.FloatField(); currency = models.CharField( max_length=3, choices=currencies, default='CHF' ) def __str__(self): return "{} {}".format(self.amount, [ j[1] for i,j in enumerate(self.currencies) if j[0] == self.currency][0] ) def short(self): return "{} {}".format([ j[0] for i,j in enumerate(self.currencies) if j[0] == self.currency][0], self.amount ) def __add__(self, other): return AmountModel(amount=self.amount+other.amount, currency=self.currency) class DocumentModel(models.Model): class Meta: abstract = True tex = models.FileField(verbose_name = "TeX") pdf = models.FileField(verbose_name = "PDF") def generate_pdf( self ): return class Invoice(AmountModel, DocumentModel): STATUS = ( ("o", "open"), # initialized ("c", "complete"), # completed (no info missing) ("s","sent"), # sent ("p","pending"), # sent but money not yet received ("pd","paid") # paid and archived ) client = models.ForeignKey( 'Client', on_delete=models.CASCADE ) title = models.CharField( max_length=200 ) status = models.CharField( max_length=2, choices = STATUS ) number = models.IntegerField( blank=True ) date_created = models.DateField( auto_now=True ) date_sent = models.DateField( blank=True ) date_paid = models.DateField( blank=True ) @property def jobs(self): return Job.objects.filter( invoice=self ) @property def expenses(self): return Expense.objects.filter( invoice=self ) def __str__(self): if self.status.startswith('p'): return '%d %s'.format(self.number, self.title ) return self.title def update_status(self): if (self.date_sent == None): self.status = STATUS[0][0] elif (self.date_paid == None): self.status = STATUS[1][0] else: self.status = STATUS[2][0] return def calculate_amount(self): amount = 0 for o in [ self.jobs, self.expenses ].flatten: amount += o.amount self.amount = amount self.save() return def create_tex( self ): template_file = 'templates/invoice.tex' t = loader.get_template(template_file) context = { 'title': self.title, } filename = '%d %s'.format(self.number, slugify(self.title) ) self.tex.file = open(filename+'.tex', 'w') self.tex.file.write(smart_str( t.render(context) )) return def send_to_client( self ): return # views.py class CreateInvoice(CreateView): model = Invoice form_class = InvoiceForm template_name = 'standard_form.html' def get_initial(self): initial = super(CreateView, self).get_initial().copy() initial['title'] = "blablabla" amount = {'CHF': 0, 'EUR': 0} currency = self.jobs[0].worth.currency for j in self.jobs: amount[j.worth.currency] += j.worth.amount for a in amount.keys(): if not amount[a] == 0: try: initial['value'] is None except KeyError: initial['currency'] = a initial['amount'] = amount[a] print(initial) return initial def post(self, request, *args, **kwargs): print("post()") req = request.POST.copy() req.pop('csrfmiddlewaretoken') self.jobs = Job.objects.filter(id__in=req.keys(), client_id=kwargs['client_id']) return super(CreateView, self).post(request,*args,**kwargs) # standard_form.html {% extends 'main_form.html' %} {% block formaction %}{{ formaction }}{% endblock %} {% block 'title' %}{{ title }}{% endblock %} {% block form %} {% for field in form %} <div class="field{% if field.is_required %} required{% endif %}"> <div class="form-error">{{ field.errors }}</div> {{ field.label_tag }} {{ field }} </div> {% endfor %} {% endblock %} -- You received this message because you are subscribed to the Google Groups "Django users" group. To unsubscribe from this group and stop receiving emails from it, send an email to django-users+unsubscr...@googlegroups.com. To post to this group, send email to django-users@googlegroups.com. Visit this group at https://groups.google.com/group/django-users. To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/f6cc2d8f-b34e-0444-472f-b0105065e2c1%40erlikon.ch. For more options, visit https://groups.google.com/d/optout.