feat(公开内容): 添加公开内容功能,支持文档和软件下载,无需登录即可访问

This commit is contained in:
2026-03-09 15:11:45 +08:00
parent e568f92c3c
commit a3e9de5af2
10 changed files with 431 additions and 4 deletions

View File

@@ -216,3 +216,37 @@ class SystemConfig(models.Model):
"""获取系统配置,单例模式"""
config, created = cls.objects.get_or_create(pk=1)
return config
class PublicContentType(models.Model):
"""公开内容类型"""
name = models.CharField(max_length=20, unique=True, verbose_name="名称")
created_at = models.DateTimeField(auto_now_add=True, verbose_name="创建时间")
updated_at = models.DateTimeField(auto_now=True, verbose_name="更新时间")
class Meta:
verbose_name = "公开内容类型"
verbose_name_plural = "公开内容类型"
ordering = ['name']
def __str__(self):
return self.name
class PublicContent(models.Model):
"""公开内容表"""
type = models.ForeignKey(PublicContentType, on_delete=models.CASCADE, verbose_name="类型")
title = models.CharField(max_length=200, verbose_name="标题")
content = models.TextField(blank=True, null=True, verbose_name="内容")
file = models.FileField(upload_to='public_files/', blank=True, null=True, verbose_name="上传文件")
url = models.URLField(blank=True, null=True, verbose_name="链接地址")
sort_order = models.IntegerField(default=0, verbose_name="排序")
is_published = models.BooleanField(default=True, verbose_name="是否发布")
created_at = models.DateTimeField(auto_now_add=True, verbose_name="创建时间")
updated_at = models.DateTimeField(auto_now=True, verbose_name="更新时间")
class Meta:
verbose_name = "公开内容"
verbose_name_plural = "公开内容"
ordering = ['sort_order', '-created_at']
def __str__(self):
return f"{self.type.name} - {self.title}"