In Django 1.1 admin, when I go to add or change an object, my objects are displayed as:
Select host to change
* Add host
Host object
Host object
Add a __unicode__() method to Host
. To show the primary key of your host objects, you'd want something like:
class Host(models.Model):
host = models.CharField(max_length=100, primary_key=True)
def __unicode__(self):
return self.pk
...
You might want to think about showing the contents of the host
field:
class Host(models.Model):
host = models.CharField(max_length=100, primary_key=True)
def __unicode__(self):
return self.host
...
You'll need to do something similar for every model you've got.
For Python 3 compatibility, you'll want to do something like this (see the documentation):
from __future__ import unicode_literals
from django.utils.encoding import python_2_unicode_compatible
@python_2_unicode_compatible
class Host(models.Model):
host = models.CharField(max_length=100, primary_key=True)
def __str__(self):
return self.host
...
contrib.admin
has been reworked in 1.0, and old Admin
classes inside models no longer work. What you need is ModelAdmin
subclass in your_application.admin
module, e.g.
from your_application.models import Host
from django.contrib import admin
class HostAdmin(admin.ModelAdmin):
list_display = ('host',)
admin.site.register(Host, HostAdmin)
Or use __unicode__
in the model itself, e.g.
class Host(models.Model):
host = models.CharField(max_length=100,primary_key=True)
def __unicode__(self):
return self.host
It might also be worth mentioning that, if you are using an auto-incrementing primary key for your models, you will need to coerce it into a string, eg:
def __unicode__(self):
return str(self.pk)