model
from django.contrib.auth.models import User
class Profile(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE, default=None, verbose_name='用户')
name_show = models.CharField(max_length=50, null=False, blank=False, verbose_name='用户昵称')
avatar = models.ImageField(upload_to='image/', null=True, blank=True, verbose_name='头像',
default='image/avatar.png')
follow_count = models.IntegerField(verbose_name='粉丝数', default=0)
like_count = models.IntegerField(verbose_name='点赞数', default=0)
view_count = models.IntegerField(verbose_name='浏览数', default=0)
collect_count = models.IntegerField(verbose_name='收藏数', default=0)
article_count = models.IntegerField(verbose_name='文章数', default=0)
introduction = models.CharField(max_length=100, null=False, blank=False, verbose_name='用户简介',
default='这个人很懒,什么都没有留下')
department = models.CharField(max_length=100, null=True, blank=True, verbose_name='部门', default='')
created_at = models.DateTimeField(verbose_name='创建时间', editable=False, null=False, default=timezone.now)
updated_at = models.DateTimeField(verbose_name='更新时间', editable=False, null=False, auto_now=True)
def __str__(self):
return self.name_show
class Meta:
verbose_name = "资料"
verbose_name_plural = verbose_name
admin
from django.contrib import admin
from .models import *
from django.contrib.auth.admin import UserAdmin
from django.contrib.auth.models import User
class ProfileAdmin(admin.StackedInline):
model = Profile
list_display = (
'id', 'user', 'avatar', 'avatar_tag', 'follower_count', 'like_count', 'collect_count', 'article_count')
class UserAdmin(UserAdmin):
list_display = (
'id', 'username', 'avatar_tag', 'email', 'is_staff', 'is_active', 'is_superuser', 'date_joined', 'last_login')
inlines = (ProfileAdmin,)
def avatar_tag(self, obj):
return obj.profile.avatar_tag()
# admin.site.register(Profile, ProfileAdmin)
admin.site.unregister(User)
admin.site.register(User, UserAdmin)