python - django admin site view one to one classes fields -


in models:

class professor(models.model):   user = models.onetoonefield(user)   salary = models.floatfield() class student(models.model):   user = models.onetoonefield(user)   birth_date = models.datefield() 

in admin.py

from django.contrib.auth.admin import useradmin django.contrib.auth.models import user  useradmin.list_display = ('email', 'first_name', 'last_name','is_active','date_joined', 'is_staff') 

how can display inside users admin site if user professor or student?is possible access properties salary individual based on model.

you can use custom methods in list_display. code:

from django.contrib.auth.admin import useradmin djangouseradmin django.contrib.auth.models import user  class useradmin(djangouseradmin):     list_display = ('email', 'first_name', 'last_name','is_active','date_joined', 'is_staff', 'user_type', 'salary')      def user_type(self, instance):         try:             instance.student             return "student"         except student.doesnotexist:             return "professor"      def salary(self, instance):         try:             return instance.professor.salary         except professor.doesnotexist:             return "n/a"      def queryset(self, request):         qs = super(useradmin, self).queryset(request)         # reduce database calls         return qs.select_related('student', 'professor')   admin.site.unregister(user) admin.site.register(user, useradmin) 

it add additional columns user_type , salary change_list admin page.

updated: @adrián lópez. subclassing django builtin useradmin.


Comments

Popular posts from this blog

php - mySql Join with 4 tables -

css - Text drops down with smaller window -

c# - DetailsView in ASP.Net - How to add another column on the side/add a control in each row? -