Tuesday, February 1, 2011

Re: using return upper

On Tue, Feb 1, 2011 at 10:32 AM, makayabou <makayabou@gmail.com> wrote:
> Hello,
> I'm trying to modify my admin.py from my app "ordis":
>
> from ordis.models import Ordi, Maintenance, OperatingSystem
> from django.contrib import admin
>
> #class MaintenanceAdmin(admin.ModelAdmin):
>        #list_display = (???) here I would like to see my Computer id, and
> the OS installed on it
>
> def renvoi_os(Ordi):
>        #return ("%d" % (Ordi.id)).upper()
>        return ("%d %d" % (Ordi.id, Ordi.operatingsystemused)).upper()
> class MaintenanceAdmin(admin.ModelAdmin):
>    list_display = (renvoi_os,)

The function renvoi_os seems to take an 'Ordi' (ordinateur?) object,
but you have associated it with MaintenanceAdmin, which is associated
with Maintenance, not an Ordi, so the renvoi_os function will raise an
exception when you attempt to access the 'operatingsystemused'
attribute, which exists on Ordi instances, not Maintenance instances.

Further more, 'operatingsystemused' is not a simple attribute of Ordi,
its a ManyToMany, which you are trying to display as a decimal number
('%d' in your format string).

This should work:

def renvoi_os(maintenance):
oses_installed = u',
'.join(maintenance.ordi.operationsystemused_set.all().values('operatingsystem',
flat=True))
       return ("%d %s" % (maintenance.ordi.id, oses_installed)).upper()

class MaintenanceAdmin(admin.ModelAdmin):
   list_display = (renvoi_os,)

Cheers

Tom

--
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+unsubscribe@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/django-users?hl=en.

No comments:

Post a Comment