116 lines
3.2 KiB
Python
116 lines
3.2 KiB
Python
from django.db import models
|
||
|
||
from core.models.base import UUIDPrimaryKeyModel
|
||
|
||
|
||
class LookupGroup(UUIDPrimaryKeyModel):
|
||
module = models.CharField(
|
||
max_length=50,
|
||
verbose_name="所属模块",
|
||
help_text="client / property",
|
||
)
|
||
key = models.CharField(
|
||
max_length=100,
|
||
verbose_name="分组 key",
|
||
help_text="如 source / follow_purpose",
|
||
)
|
||
label_zh = models.CharField(
|
||
max_length=50,
|
||
verbose_name="分组中文名",
|
||
help_text="界面显示名称,如「客源来源」",
|
||
)
|
||
description = models.TextField(
|
||
blank=True,
|
||
default="",
|
||
verbose_name="分组说明",
|
||
help_text="前端 tooltip 使用",
|
||
)
|
||
sort_order = models.SmallIntegerField(
|
||
default=0,
|
||
verbose_name="排序",
|
||
)
|
||
created_at = models.DateTimeField(
|
||
auto_now_add=True,
|
||
verbose_name="创建时间",
|
||
)
|
||
updated_at = models.DateTimeField(
|
||
auto_now=True,
|
||
verbose_name="更新时间",
|
||
)
|
||
|
||
class Meta:
|
||
db_table = "lookup_groups"
|
||
verbose_name = "查找组"
|
||
verbose_name_plural = "查找组"
|
||
constraints = [
|
||
models.UniqueConstraint(
|
||
fields=["module", "key"], name="uq_lookup_groups_module_key"
|
||
),
|
||
]
|
||
|
||
|
||
class LookupItem(UUIDPrimaryKeyModel):
|
||
group = models.ForeignKey(
|
||
LookupGroup,
|
||
on_delete=models.CASCADE,
|
||
related_name="items",
|
||
verbose_name="所属分组",
|
||
)
|
||
value = models.CharField(
|
||
max_length=100,
|
||
verbose_name="存储值",
|
||
help_text="英文 snake_case,如 door_to_door;写入后只读",
|
||
)
|
||
label_zh = models.CharField(
|
||
max_length=50,
|
||
verbose_name="显示文本",
|
||
help_text="如「上门」",
|
||
)
|
||
is_system = models.BooleanField(
|
||
default=False,
|
||
verbose_name="是否系统预制",
|
||
help_text="True=系统预制不可物理删除,仅可停用",
|
||
)
|
||
is_active = models.BooleanField(
|
||
default=True,
|
||
verbose_name="是否启用",
|
||
help_text="False 后录入下拉不展示,历史记录保留并展示「(已停用)」后缀",
|
||
)
|
||
sort_order = models.SmallIntegerField(
|
||
default=0,
|
||
verbose_name="排序",
|
||
)
|
||
created_by = models.ForeignKey(
|
||
"org.Staff",
|
||
null=True,
|
||
blank=True,
|
||
on_delete=models.SET_NULL,
|
||
related_name="created_lookup_items",
|
||
verbose_name="创建人",
|
||
help_text="系统预制时为 NULL",
|
||
)
|
||
created_at = models.DateTimeField(
|
||
auto_now_add=True,
|
||
verbose_name="创建时间",
|
||
)
|
||
updated_at = models.DateTimeField(
|
||
auto_now=True,
|
||
verbose_name="更新时间",
|
||
)
|
||
|
||
class Meta:
|
||
db_table = "lookup_items"
|
||
verbose_name = "查找项"
|
||
verbose_name_plural = "查找项"
|
||
constraints = [
|
||
models.UniqueConstraint(
|
||
fields=["group", "value"], name="uq_lookup_items_group_value"
|
||
),
|
||
]
|
||
indexes = [
|
||
models.Index(
|
||
fields=["group", "is_active", "sort_order"],
|
||
name="idx_lookup_items_active",
|
||
),
|
||
]
|