You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
git-test/src/DjangoBlog-master/accounts/models.py

81 lines
3.2 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

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):
"""
博客用户模型继承自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}) #ZXY: 使用用户名作为URL参数
def __str__(self):
"""
定义模型的字符串表示在admin和shell中显示
这里使用邮箱而不是用户名,便于管理员识别用户
Returns:
str: 用户的邮箱地址
"""
return self.email
def get_full_url(self):
"""
获取包含完整域名的用户详情页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'] #ZXY: 默认按ID降序排列新的用户显示在前面
verbose_name = _('user') #ZXY: 单数形式的显示名称
verbose_name_plural = verbose_name #ZXY: 复数形式与单数相同
get_latest_by = 'id' #ZXY: 指定获取最新记录的字段