|
|
|
|
@ -9,27 +9,61 @@ from djangoblog.utils import get_current_site
|
|
|
|
|
# Create your models here.
|
|
|
|
|
|
|
|
|
|
class BlogUser(AbstractUser):
|
|
|
|
|
"""
|
|
|
|
|
自定义用户模型,继承自Django的AbstractUser基类
|
|
|
|
|
扩展了博客系统的用户功能
|
|
|
|
|
"""
|
|
|
|
|
|
|
|
|
|
# 昵称字段,允许为空
|
|
|
|
|
nickname = models.CharField(_('nick name'), max_length=100, blank=True)
|
|
|
|
|
|
|
|
|
|
# 用户创建时间,默认为当前时间
|
|
|
|
|
creation_time = models.DateTimeField(_('creation time'), default=now)
|
|
|
|
|
|
|
|
|
|
# 最后修改时间,默认为当前时间
|
|
|
|
|
last_modify_time = models.DateTimeField(_('last modify time'), default=now)
|
|
|
|
|
|
|
|
|
|
# 用户创建来源(如:网站注册、第三方登录等),允许为空
|
|
|
|
|
source = models.CharField(_('create source'), max_length=100, blank=True)
|
|
|
|
|
|
|
|
|
|
def get_absolute_url(self):
|
|
|
|
|
"""
|
|
|
|
|
获取用户的绝对URL,用于Django的通用视图和模板中
|
|
|
|
|
返回用户详情页的URL
|
|
|
|
|
"""
|
|
|
|
|
return reverse(
|
|
|
|
|
'blog:author_detail', kwargs={
|
|
|
|
|
'author_name': self.username})
|
|
|
|
|
|
|
|
|
|
def __str__(self):
|
|
|
|
|
"""
|
|
|
|
|
定义模型的字符串表示形式
|
|
|
|
|
在管理后台和其他显示对象的地方使用
|
|
|
|
|
这里使用邮箱作为标识
|
|
|
|
|
"""
|
|
|
|
|
return self.email
|
|
|
|
|
|
|
|
|
|
def get_full_url(self):
|
|
|
|
|
site = get_current_site().domain
|
|
|
|
|
"""
|
|
|
|
|
获取用户的完整URL(包含域名)
|
|
|
|
|
用于生成完整的用户主页链接
|
|
|
|
|
"""
|
|
|
|
|
site = get_current_site().domain # 获取当前站点域名
|
|
|
|
|
url = "https://{site}{path}".format(site=site,
|
|
|
|
|
path=self.get_absolute_url())
|
|
|
|
|
return url
|
|
|
|
|
|
|
|
|
|
class Meta:
|
|
|
|
|
"""模型的元数据配置"""
|
|
|
|
|
|
|
|
|
|
# 默认按ID降序排列(最新的用户排在前面)
|
|
|
|
|
ordering = ['-id']
|
|
|
|
|
|
|
|
|
|
# 在管理后台中显示的单数名称
|
|
|
|
|
verbose_name = _('user')
|
|
|
|
|
|
|
|
|
|
# 在管理后台中显示的复数名称
|
|
|
|
|
verbose_name_plural = verbose_name
|
|
|
|
|
get_latest_by = 'id'
|
|
|
|
|
|
|
|
|
|
# 指定获取最新记录时使用的字段
|
|
|
|
|
get_latest_by = 'id'
|