Files
fonrey/apps/setting/models/lookup.py

116 lines
3.2 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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",
),
]