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
Post a Comment