Update models.py

master
p9xvr8cjz 1 month ago
parent 61609b2565
commit 995a8ad492

@ -9,27 +9,72 @@ from djangoblog.utils import get_current_site
# Create your models here.
class BlogUser(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)
"""
博客用户模型继承自Django内置的AbstractUser基类
扩展了标准用户模型增加博客系统特有的字段
"""
#ZXY: 昵称字段:用户显示名称,可为空
nickname = models.CharField(
_('nick name'), #ZXY: 国际化标签在admin中显示为"昵称"
max_length=100, #ZXY: 最大长度100个字符
blank=True) #ZXY: 允许为空,非必填字段
#ZXY: 创建时间:记录用户账号创建的时间点
creation_time = models.DateTimeField(
_('creation time'), #ZXY: 显示为"创建时间"
default=now) #ZXY: 默认值为当前时间,自动记录创建时间戳
#ZXY: 最后修改时间:记录用户信息最后一次修改的时间
last_modify_time = models.DateTimeField(
_('last modify time'), #ZXY: 显示为"最后修改时间"
default=now) #ZXY: 默认值为当前时间
#ZXY: 注册来源:记录用户是通过什么渠道注册的
source = models.CharField(
_('create source'), #ZXY: 显示为"创建来源"
max_length=100, #ZXY: 最大长度100个字符
blank=True) #ZXY: 允许为空
def get_absolute_url(self):
"""
获取用户详情页的URL路径不含域名
用于Django的通用视图和admin中的"查看现场"链接
Returns:
str: 用户详情页的URL路径 '/author/testuser/'
"""
return reverse(
'blog:author_detail', kwargs={
'author_name': self.username})
'author_name': self.username}) #ZXY: 使用用户名作为URL参数
def __str__(self):
"""
定义模型的字符串表示在admin和shell中显示
这里使用邮箱而不是用户名便于管理员识别用户
Returns:
str: 用户的邮箱地址
"""
return self.email
def get_full_url(self):
site = get_current_site().domain
url = "https://{site}{path}".format(site=site,
path=self.get_absolute_url())
"""
获取包含完整域名的用户详情页URL
用于邮件通知外部链接等需要完整URL的场景
Returns:
str: 完整的用户URL 'https://example.com/author/testuser/'
"""
site = get_current_site().domain #ZXY: 获取当前站点的域名
url = "https://{site}{path}".format(
site=site,
path=self.get_absolute_url()) #ZXY: 组合域名和路径
return url
class Meta:
ordering = ['-id']
verbose_name = _('user')
verbose_name_plural = verbose_name
get_latest_by = 'id'
"""
模型的元数据配置类
用于定义模型级别的选项和配置
"""
ordering = ['-id'] #ZXY: 默认按ID降序排列新的用户显示在前面
verbose_name = _('user') #ZXY: 单数形式的显示名称
verbose_name_plural = verbose_name #ZXY: 复数形式与单数相同
get_latest_by = 'id' #ZXY: 指定获取最新记录的字段

Loading…
Cancel
Save