lakshmen
lakshmen

Reputation: 29084

Displaying the model's__unicode__ in django admin

I would like to display the model's username in Django Admin interface but not very sure how to do it..

The models.py:

    class Adult(models.Model):    
        user = models.OneToOneField(User)
        fullname = models.CharField(max_length=100,
                                    blank=True)
        def __unicode__(self):
            return self.user.username

Admin.py:

    class AdultAdmin(admin.ModelAdmin):
        list_display = ('??', 'Student_Name',)
        search_fields = ['??',]

    admin.site.register(Adult, AdultAdmin)

What should go inside the ?? above ? I would like to display the unicode or the self.user.username? How do i do it? Need some guidance...

Upvotes: 24

Views: 12991

Answers (1)

Burhan Khalid
Burhan Khalid

Reputation: 174642

From the list_display documentation there are four things you can add there:

  1. A field
  2. Some method (a callable) that accepts one variable that is the instance for which the row is being displayed.
  3. A string that is the name of a method or attribute defined in the model class.
  4. A string that is the name of a method that is defined in ModelAdmin.

For your case we need #3 for list_display.

For search_fields its easier as you can use follow notation (__) to do lookups.

In the end we come up with this:

class AdultAdmin(admin.ModelAdmin):
    list_display = ('__unicode__', 'Student_Name',)
    search_fields = ['user__username']

Upvotes: 48

Related Questions