|
|
|
|
@ -6,30 +6,46 @@ from django.utils.translation import gettext_lazy as _
|
|
|
|
|
from djangoblog.utils import get_current_site
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#ccy: 用户管理模块 - 扩展Django默认用户模型,添加博客系统所需的用户字段和功能
|
|
|
|
|
# Create your models here.
|
|
|
|
|
|
|
|
|
|
#ccy: 博客用户模型 - 继承AbstractUser扩展自定义用户字段
|
|
|
|
|
class BlogUser(AbstractUser):
|
|
|
|
|
#ccy: 用户昵称字段,最大长度100字符,允许为空
|
|
|
|
|
nickname = models.CharField(_('nick name'), max_length=100, blank=True)
|
|
|
|
|
#ccy: 用户创建时间,自动设置为当前时间
|
|
|
|
|
creation_time = models.DateTimeField(_('creation time'), default=now)
|
|
|
|
|
#ccy: 用户最后修改时间,自动更新为当前时间
|
|
|
|
|
last_modify_time = models.DateTimeField(_('last modify time'), default=now)
|
|
|
|
|
#ccy: 用户创建来源,记录用户注册渠道
|
|
|
|
|
source = models.CharField(_('create source'), max_length=100, blank=True)
|
|
|
|
|
|
|
|
|
|
#ccy: 获取用户绝对URL - 用于生成用户详情页链接
|
|
|
|
|
def get_absolute_url(self):
|
|
|
|
|
return reverse(
|
|
|
|
|
'blog:author_detail', kwargs={
|
|
|
|
|
'author_name': self.username})
|
|
|
|
|
|
|
|
|
|
#ccy: 字符串表示方法 - 返回用户邮箱作为标识
|
|
|
|
|
def __str__(self):
|
|
|
|
|
return self.email
|
|
|
|
|
|
|
|
|
|
#ccy: 获取用户完整URL - 包含域名的完整用户链接
|
|
|
|
|
def get_full_url(self):
|
|
|
|
|
#ccy: 获取当前站点域名
|
|
|
|
|
site = get_current_site().domain
|
|
|
|
|
#ccy: 拼接完整URL,包含协议和域名
|
|
|
|
|
url = "https://{site}{path}".format(site=site,
|
|
|
|
|
path=self.get_absolute_url())
|
|
|
|
|
return url
|
|
|
|
|
|
|
|
|
|
#ccy: Meta类 - 定义用户模型的元数据配置
|
|
|
|
|
class Meta:
|
|
|
|
|
#ccy: 按ID降序排列,新用户显示在前面
|
|
|
|
|
ordering = ['-id']
|
|
|
|
|
#ccy: 单数模型名称
|
|
|
|
|
verbose_name = _('user')
|
|
|
|
|
#ccy: 复数模型名称
|
|
|
|
|
verbose_name_plural = verbose_name
|
|
|
|
|
get_latest_by = 'id'
|
|
|
|
|
#ccy: 指定获取最新记录的依据字段
|
|
|
|
|
get_latest_by = 'id'
|