from django.contrib.auth.models import AbstractUser from django.db import models from django.urls import reverse from django.utils.timezone import now from django.utils.translation import gettext_lazy as _ from djangoblog.utils import get_current_site # Create your models here. class BlogUser(AbstractUser): #sjt 扩展Django内置用户模型,增加博客系统所需的用户属性 nickname = models.CharField(_('nick name'), max_length=100, blank=True) # sjt 用户昵称 creation_time = models.DateTimeField(_('creation time'), default=now) # sjt 账号创建时间 last_modify_time = models.DateTimeField(_('last modify time'), default=now) # sjt 信息最后修改时间 source = models.CharField(_('create source'), max_length=100, blank=True) # sjt 账号创建来源(如注册、后台添加) def get_absolute_url(self): #sjt 获取用户详情页的相对URL return reverse( 'blog:author_detail', kwargs={ 'author_name': self.username}) def __str__(self): #sjt 对象字符串表示,返回用户邮箱 return self.email def get_full_url(self): #sjt 获取用户详情页的完整URL(包含域名) site = get_current_site().domain url = "https://{site}{path}".format(site=site, path=self.get_absolute_url()) return url class Meta: ordering = ['-id'] # sjt 按ID倒序排列 verbose_name = _('user') # sjt 模型显示名称 verbose_name_plural = verbose_name get_latest_by = 'id' # sjt 最新记录按ID判断