Bas van der Zon Bas van der Zon - 2 years ago 99
Python Question

Django: show list of many to many items in the admin interface

This might be a simple question, but i can't seem to grasp it.

I have two simple models in Service and Host. has a m2m relationship with Service.
In other words, a host has several services and one service can reside on multiple hosts; a basic m2m.

class Service(models.Model):
servicename = models.CharField(max_length=50)

def __unicode__(self):
return self.servicename

class Admin:

class Host(models.Model):
hostname = models.CharField(max_length=200)
services = models.ManyToManyField(Service)

def get_services(self):

def __unicode__(self):
return self.hostname

class Admin:

from cmdb.hosts.models import Host
from django.contrib import admin

class HostAdmin(admin.ModelAdmin):

list_display = ('get_services',), HostAdmin)

Now when i open the page where all the host's columns are listed the 'service' column displays the output like:

Get services

[<Service: the_service-1>, <Service: the_service-2>]

Instead of:




What am i doing wrong?
Thank you for reading my question.

Answer Source

You should change get_services to something like:

def get_services(self):
    return "\n".join([s.servicename for s in])

Update: Try using \n as the separator rather than <br/>, as the output of get_services is being escaped.

Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download