Vittorino, this is not related to your initial question and you must
consider that the format() returns always a string. And why do you use
format() in total_no_vat()?

I would separate the "total":

...
     def total_no_vat(self):
        return self.total_income + self.total_fee

     def total(self):
         return self.total_no_vat() * 1.21

     def formatted_total(self):
         return format(self.total(), settings.DECIMAL_SEPARATOR, 2)

now you can use formatted_total in your list_display
Denis.


On Sat, Feb 4, 2012 at 2:40 PM, Vittorino Parenti <
vpare...@thundersystems.it> wrote:

> Hi,
> I think this is not the solution.
> I do another example:
>
> MODEL
> ------------
> class Procedure(models.Model):
>      ....
>      total_income = models.DecimalField (
>        default = 0,
>        max_digits = 11,
>        decimal_places = 4,
>        verbose_name = _("Total Income"),
>      )
>      total_fee = models.DecimalField (
>        default = 0,
>        max_digits = 11,
>        decimal_places = 4,
>        verbose_name = _("Total Fee"),
>      )
>      ....
>       def total_no_vat(self):
>         total_no_vat -no= self.total_income + self.total_fee
>         return format(total_no_vat, settings.DECIMAL_SEPARATOR, 2)
>
>      def total(self):
>          total = self.total_no_vat() * 1.21
>          return format(total, settings.DECIMAL_SEPARATOR, 2)
>
> type of self.total_no_vat is unicode and I cannot do other operations
> on this field.
> Thanks,
> Vittorino
>
>
> On 4 Feb, 10:15, Denis Darii <denis.da...@gmail.com> wrote:
> > Hi Vittorino, this is happen because the model fields are automatically
> > formatted by django considering your settings.DECIMAL_SEPARATOR, but in
> > your total() you're simply return the sum of two Decimal()
> >
> > To solve this you can import format and pass the result of total() to it
> > like:
> >
> > from django.conf import settings
> > from django.utils.numberformat import format
> > ...
> >      def total(self):
> >         total = self.total_income + self.total_fee
> >         return format(total, settings.DECIMAL_SEPARATOR, 2)
> >
> > hope it helps! Have a nice weekend!
> > Denis.
> >
> > On Sat, Feb 4, 2012 at 9:52 AM, Vittorino Parenti <
> >
> >
> >
> >
> >
> >
> >
> > vpare...@thundersystems.it> wrote:
> > > Hello,
> > > i've a problem with number format localization. This is an example of
> > > my model and admin:
> >
> > > MODEL
> > > ------------
> > > class Procedure(models.Model):
> > >      ....
> > >      total_income = models.DecimalField (
> > >        default = 0,
> > >        max_digits = 11,
> > >        decimal_places = 4,
> > >        verbose_name = _("Total Income"),
> > >      )
> > >      total_fee = models.DecimalField (
> > >        default = 0,
> > >        max_digits = 11,
> > >        decimal_places = 4,
> > >        verbose_name = _("Total Fee"),
> > >      )
> > >      ....
> > >      def total(self):
> > >         return self.total_income + self.total_fee
> >
> > > ADMIN
> > > -----------
> > > class ProcedureAdmin(dmin.ModelAdmin):
> > >      list_display = (..., 'total_income', 'total_fee', 'total', ...)
> >
> > > output is:
> >
> > > ... | 35,22 | 9,28 | 45.50 | ...
> >
> > > with comma in first two cases and dot then.
> > > How can I do?
> > > Thanks in advance,
> > > Vittorino
> >
> > > --
> > > You received this message because you are subscribed to the Google
> Groups
> > > "Django users" group.
> > > To post to this group, send email to django-users@googlegroups.com.
> > > To unsubscribe from this group, send email to
> > > django-users+unsubscr...@googlegroups.com.
> > > For more options, visit this group at
> > >http://groups.google.com/group/django-users?hl=en.
>
> --
> You received this message because you are subscribed to the Google Groups
> "Django users" group.
> To post to this group, send email to django-users@googlegroups.com.
> To unsubscribe from this group, send email to
> django-users+unsubscr...@googlegroups.com.
> For more options, visit this group at
> http://groups.google.com/group/django-users?hl=en.
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To post to this group, send email to django-users@googlegroups.com.
To unsubscribe from this group, send email to 
django-users+unsubscr...@googlegroups.com.
For more options, visit this group at 
http://groups.google.com/group/django-users?hl=en.

Reply via email to