django 扩展user用户字段inlines

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u013967628/article/details/83626553

model:

class Profile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE, verbose_name='昵称')
    nickname = models.CharField(max_length=20)

    def __str__(self):
        return '<Profile: %s for %s>' % (self.nickname, self.user.username)

admin.py

from django.contrib import admin
from django.contrib.auth.models import User
from .models import Profile


class ProfileInline(admin.StackedInline): #将Profile加入到Admin的user表中,内联
    model = Profile
    can_delete = False

class UserAdmin(admin.ModelAdmin):
    inlines = [ProfileInline]
    list_display = ('username', 'nickname', 'email', 'is_staff', 'is_active', 'is_superuser')

    def nickname(self, obj):
        return obj.profile.nickname #自定义字段显示信息

    nickname.short_description = '昵称'

# Re-register UserAdmin
admin.site.unregister(User) #去掉在admin中的注册
admin.site.register(User, UserAdmin) #用UserAdmin注册user

猜你喜欢

转载自blog.csdn.net/u013967628/article/details/83626553