Files
SMANAGE/gvsds/apps/community/models.py
T

113 lines
5.1 KiB
Python

"""模块:Community 社区数据模型
官网社区(discuss.gvsds.com):
- CommunityBoard 板块(一级分区,如「交流讨论 / 问题求助 / 项目展示」)
- CommunityCategory 板块内分类(二级,如「公告 / 建议」)
- CommunityPost 帖子(标题 + 内容,挂板块与可选分类)
- CommunityReply 回复(引用楼层可空)
- CommunityLike 点赞(帖子维度,同用户唯一)
"""
from django.db import models
import gvsds.apps.core.models as core_models
from gvsds.model_base import QModel
class CommunityBoard(QModel):
"""社区板块"""
BoardUUID = core_models.UUIDField(primary_key=True, verbose_name='板块UUID')
BoardName = models.CharField(max_length=64, verbose_name='板块名称')
BoardDesc = models.CharField(max_length=255, default='', verbose_name='板块描述')
BoardOrder = models.IntegerField(default=0, verbose_name='排序')
BoardStatus = models.SmallIntegerField(default=1, verbose_name='状态(1启用/0停用)')
CreateTime = models.DateTimeField(auto_now_add=True, verbose_name='创建时间')
class Meta:
db_table = 'CommunityBoard'
app_label = 'community'
ordering = ['BoardOrder', 'CreateTime']
verbose_name = '社区板块'
verbose_name_plural = '社区板块'
class CommunityCategory(QModel):
"""板块内分类"""
CategoryUUID = core_models.UUIDField(primary_key=True, verbose_name='分类UUID')
BoardUUID = core_models.UUIDField(db_column='BoardUUID', verbose_name='板块UUID')
CategoryName = models.CharField(max_length=64, verbose_name='分类名称')
CategoryOrder = models.IntegerField(default=0, verbose_name='排序')
CategoryStatus = models.SmallIntegerField(default=1, verbose_name='状态(1启用/0停用)')
CreateTime = models.DateTimeField(auto_now_add=True, verbose_name='创建时间')
class Meta:
db_table = 'CommunityCategory'
app_label = 'community'
ordering = ['CategoryOrder', 'CreateTime']
verbose_name = '社区分类'
verbose_name_plural = '社区分类'
class CommunityPost(QModel):
"""社区帖子"""
PostUUID = core_models.UUIDField(primary_key=True, verbose_name='帖子UUID')
BoardUUID = core_models.UUIDField(db_column='BoardUUID', verbose_name='板块UUID')
CategoryUUID = core_models.UUIDField(null=True, blank=True, db_column='CategoryUUID', verbose_name='分类UUID')
Title = models.CharField(max_length=128, verbose_name='标题')
Content = models.TextField(default='', verbose_name='内容')
AuthorUUID = core_models.UUIDField(db_column='AuthorUUID', verbose_name='作者UUID')
AuthorName = models.CharField(max_length=64, default='', verbose_name='作者名称')
ViewCount = models.IntegerField(default=0, verbose_name='浏览量')
LikeCount = models.IntegerField(default=0, verbose_name='点赞数')
ReplyCount = models.IntegerField(default=0, verbose_name='回复数')
IsPinned = models.SmallIntegerField(default=0, verbose_name='置顶(1/0)')
IsLocked = models.SmallIntegerField(default=0, verbose_name='锁定(1/0)')
PostStatus = models.SmallIntegerField(default=1, verbose_name='状态(1发布/0删除)')
CreateTime = models.DateTimeField(auto_now_add=True, verbose_name='创建时间')
UpdateTime = models.DateTimeField(auto_now=True, verbose_name='更新时间')
class Meta:
db_table = 'CommunityPost'
app_label = 'community'
ordering = ['-IsPinned', '-CreateTime']
verbose_name = '社区帖子'
verbose_name_plural = '社区帖子'
class CommunityReply(QModel):
"""社区回复"""
ReplyUUID = core_models.UUIDField(primary_key=True, verbose_name='回复UUID')
PostUUID = core_models.UUIDField(db_column='PostUUID', verbose_name='帖子UUID')
AuthorUUID = core_models.UUIDField(db_column='AuthorUUID', verbose_name='作者UUID')
AuthorName = models.CharField(max_length=64, default='', verbose_name='作者名称')
Content = models.TextField(default='', verbose_name='回复内容')
ReplyToUUID = core_models.UUIDField(null=True, blank=True, db_column='ReplyToUUID', verbose_name='引用回复UUID')
ReplyStatus = models.SmallIntegerField(default=1, verbose_name='状态(1/0)')
CreateTime = models.DateTimeField(auto_now_add=True, verbose_name='创建时间')
class Meta:
db_table = 'CommunityReply'
app_label = 'community'
ordering = ['CreateTime']
verbose_name = '社区回复'
verbose_name_plural = '社区回复'
class CommunityLike(QModel):
"""帖子点赞(同用户同帖子唯一)"""
LikeUUID = core_models.UUIDField(primary_key=True, verbose_name='点赞UUID')
PostUUID = core_models.UUIDField(db_column='PostUUID', verbose_name='帖子UUID')
AuthorUUID = core_models.UUIDField(db_column='AuthorUUID', verbose_name='用户UUID')
CreateTime = models.DateTimeField(auto_now_add=True, verbose_name='创建时间')
class Meta:
db_table = 'CommunityLike'
app_label = 'community'
unique_together = (('PostUUID', 'AuthorUUID'),)
verbose_name = '帖子点赞'
verbose_name_plural = '帖子点赞'