On Saturday, January 29, 2011 12:28:49 PM UTC, Victor Hooi wrote: > > Hi, > > I'm trying to use list_display in the django-admin, and I can't seem to > find a way to get list_display to follow FK links. > > My models.py: > > class Site(models.Model): > name = models.CharField(max_length=50, unique=True) > description = models.TextField() > > def __unicode__(self): > return u'%s' % (self.name) > > class AccommodationFeature(models.Model): > name = models.CharField(max_length=50, unique=True) > description = models.TextField() > > class AccommodationRoom(models.Model): > name = models.CharField(max_length=50) > site = models.ForeignKey(Site) > features = models.ManyToManyField(AccommodationFeature, null=True, > blank=True) > > def __unicode__(self): > return u'%s' % (self.name) > > class BedAvailability(models.Model): > number_of_single_beds = models.IntegerField() > number_of_double_beds = models.IntegerField() > conference = models.ForeignKey(Conference) > accommodation_room = models.ForeignKey(AccommodationRoom) > > class Meta: > verbose_name_plural = 'bed availabilities' > > def __unicode__(self): > return u'Availability for %s at %s' % (self.accommodation_room, > self.conference) > # Surely this isredundant? hmm, list_dispaly doesn't seem to follow > foreignkey relationships? > def site_name(self): > return u'%s' % (self.accommodation_room.site.name) > > Each "Site" has multiple "AccommodationRooms", which in turn have > "BedAvailabilities". > > In the BedAvailabilitiesAdmin, for list_display, I'm trying to follow > self.accommodation_room.site. This doesn't work using either dot notation or > double-underscore notation. > > Other ModelAdmin options seem to allow following FK links, using the double > underscore notation. > > E.g. ModelAdmin.search_fields allows you to search across FK's using: > > search_fields = ['foreign_key__related_fieldname'] > > > list_filter also seems to allow the same behaviour. > > At the moment, I'm just using a function on BedAvailabilities to follow the > relationships and print the site name. However, this seems a bit silly when > logic would dictate that list_display behaves the same as search_fields and > list_filter. > > Is there any reason this feature doesn't work for list_display? > > There's some discussion of it on SO: > > > http://stackoverflow.com/questions/163823/can-list-display-in-a-django-modeladmin-display-attributes-of-foreignkey-fields > > And a ticket for it her: > > http://code.djangoproject.com/ticket/5863 > > but discussion seems to have petered off. Is there a technical or design > reason for this? > > Cheers, > Victor >
The SO discussion you link to has several answers that give the correct workaround - create a method on the ModelAdmin that returns the value of the followed foreignkey. -- DR. -- 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.