Django Admin filter on Foreign Key property


I want to add a filter in an admin changelist by a property of a foreign key, e.g.

class Address(model.Models):
    street = models.CharField(max_length=25)        
    city = models.CharField(max_length=25)
    country = models.CharField(max_length=25)        

class Customer(models.Model):
    name = models.CharField(max_length=25)
    address = models.ForeignKey(Address)

Let's say in the Customer admin changelist I want to show a filter by city and country (so show me all customers in a particular country or city).

But the standard list_filter() functionality seems to only allow filtering by fields directly on the model and not on any of its foreign key. I've tried:

list_filter = ("address__country",)


list_filter = ("",)

but I always get the same type of error:

 'address__country' is not a callable or an attribute 

Any suggestions would be welcome. Is there some special naming convention/syntax to allow filtering on FK properties?

3/4/2010 1:49:50 PM

See . It works ok in django 1.3 :)

class Room(models.Model):
    house = models.ForeignKey(House)

    def __unicode__(self):

class Booking(models.Model):
    room = models.ForeignKey(Room)

    def __unicode__(self):

class BookingOpts(admin.ModelAdmin):
    list_filter = ('room__house__town',)
    raw_id_admin = ('room', ), BookingOpts)
10/20/2011 8:43:36 PM

Licensed under: CC-BY-SA with attribution
Not affiliated with: Stack Overflow