2025-02-25 14:29:18 +08:00

65 lines
1.9 KiB
Python
Raw Permalink 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.

import uuid
from datetime import datetime
from django.db import models
from simplepro.components import fields
class BaseQuerySet(models.QuerySet):
def set_delete(self):
return super(BaseQuerySet, self).update(delete_at=datetime.now())
class BaseManager(models.Manager):
def __init__(self, *args, **kwargs):
self.alive_only = kwargs.pop("alive_only", True)
super(BaseManager, self).__init__(*args, **kwargs)
def get_queryset(self):
"""软删除"""
if self.alive_only:
# 为True表示返回给admin的queryset为已过滤数据
return BaseQuerySet(self.model).filter(delete_at__isnull=True)
return BaseQuerySet(self.model)
class BaseModel(models.Model):
"""
自定义Model基类
"""
id = models.BigAutoField(primary_key=True)
uid = models.UUIDField(
default=uuid.uuid4, editable=False, db_index=True, verbose_name="UUID"
)
create_at = fields.DateTimeField(
auto_now_add=True, db_index=True, verbose_name="创建时间"
)
update_at = fields.DateTimeField(auto_now=True, verbose_name="更新时间")
delete_at = fields.DateTimeField(null=True, blank=True, verbose_name="删除时间")
create_by = fields.CharField(
null=True, blank=True, max_length=32, verbose_name="创建人"
)
detail = fields.CharField(
null=True,
blank=True,
max_length=200,
show_word_limit=True,
prefix_icon="el-icon-edit",
verbose_name="备注信息",
placeholder="请输入备注信息(可为空)",
)
objects = BaseManager() # 默认查看已存在数据
all_objects = BaseManager(alive_only=False) # 返回已存在数据(包括已删除)
class Meta:
abstract = True
ordering = ["-create_at"]
def set_delete(self):
"""软删除"""
self.delete_at = datetime.now()
self.save()