[Fixed]-Django – Search related fields


UPDATE: this answer is outmoded, see the answer from elsadek instead

You’re asking to be able to follow a reverse relation (ie, from PhoneNumber back to Contact) but I don’t believe the double-underscore __ trick for spanning tables will work here.

If your Contact had the key to the PhoneNumber model instead of the current set-up:

class Contact(models.Model):
    phone = models.ForeignKey(PhoneNumber)

then in the admin config you could do:

search_fields = ('first_name', 'last_name', 'email', 'phone__phone')


Just in case someone comes over this question, in Django 1.6, search in reverse relation is indeed possible.

In your phone model add related_name=”phonesList” to contact field

contact = models.ForeignKey(Contact, related_name="phonesList")

Now in search_field you can use the double undescore to go from conatct to phones like this:

search_fields = ('first_name', 'last_name', 'email','phonesList__phone')

Leave a comment