156 lines
5.8 KiB
Python
156 lines
5.8 KiB
Python
![]() |
from django.contrib.auth import get_user_model
|
||
|
from django.db import models
|
||
|
from django.db.models import SET_NULL
|
||
|
|
||
![]() |
from utils.string_util import uuid_8, uuid_16, uuid_32, uuid_36
|
||
![]() |
|
||
|
|
||
|
class IdField(models.CharField):
|
||
|
"""
|
||
|
id = IdField()
|
||
|
"""
|
||
|
|
||
|
def __init__(self, *args, **kwargs):
|
||
|
kwargs['max_length'] = kwargs.get('max_length', 8)
|
||
|
kwargs['primary_key'] = kwargs.get('primary_key', True)
|
||
|
kwargs['unique'] = kwargs.get('unique', True)
|
||
|
kwargs['db_index'] = kwargs.get('db_index', True)
|
||
|
kwargs['default'] = kwargs.get('default', uuid_8)
|
||
|
kwargs['null'] = kwargs.get('null', False)
|
||
|
kwargs['blank'] = kwargs.get('blank', False)
|
||
|
kwargs['verbose_name'] = kwargs.get('verbose_name', 'ID')
|
||
|
kwargs['help_text'] = kwargs.get('help_text', 'ID')
|
||
|
super().__init__(*args, **kwargs)
|
||
|
|
||
|
|
||
|
class UUID8Field(models.CharField):
|
||
|
|
||
|
def __init__(self, *args, **kwargs):
|
||
|
kwargs['max_length'] = kwargs.get('max_length', 8)
|
||
|
kwargs['default'] = kwargs.get('default', uuid_8)
|
||
|
kwargs['verbose_name'] = kwargs.get('verbose_name', 'UUID')
|
||
|
kwargs['help_text'] = kwargs.get('help_text', 'UUID')
|
||
|
super().__init__(*args, **kwargs)
|
||
|
|
||
|
|
||
|
class UUID16Field(models.CharField):
|
||
|
|
||
|
def __init__(self, *args, **kwargs):
|
||
|
kwargs['max_length'] = kwargs.get('max_length', 16)
|
||
|
kwargs['default'] = kwargs.get('default', uuid_16)
|
||
|
kwargs['verbose_name'] = kwargs.get('verbose_name', 'UUID')
|
||
|
kwargs['help_text'] = kwargs.get('help_text', 'UUID')
|
||
|
super().__init__(*args, **kwargs)
|
||
|
|
||
|
|
||
|
class UUID32Field(models.CharField):
|
||
|
|
||
|
def __init__(self, *args, **kwargs):
|
||
|
kwargs['max_length'] = kwargs.get('max_length', 32)
|
||
|
kwargs['default'] = kwargs.get('default', uuid_32)
|
||
|
kwargs['verbose_name'] = kwargs.get('verbose_name', 'UUID')
|
||
|
kwargs['help_text'] = kwargs.get('help_text', 'UUID')
|
||
|
super().__init__(*args, **kwargs)
|
||
|
|
||
|
|
||
|
class UUID36Field(models.CharField):
|
||
|
|
||
|
def __init__(self, *args, **kwargs):
|
||
|
kwargs['max_length'] = kwargs.get('max_length', 36)
|
||
|
kwargs['unique'] = kwargs.get('unique', True)
|
||
|
kwargs['default'] = kwargs.get('default', uuid_36)
|
||
|
kwargs['verbose_name'] = kwargs.get('verbose_name', 'UUID')
|
||
|
kwargs['help_text'] = kwargs.get('help_text', 'UUID')
|
||
|
super().__init__(*args, **kwargs)
|
||
|
|
||
|
|
||
|
class DescriptionField(models.TextField):
|
||
|
"""
|
||
|
description = DescriptionField()
|
||
|
"""
|
||
|
|
||
|
def __init__(self, *args, **kwargs):
|
||
![]() |
if kwargs.get('null', True):
|
||
|
kwargs['default'] = kwargs.get('default', '')
|
||
![]() |
kwargs['blank'] = kwargs.get('blank', True)
|
||
|
kwargs['null'] = kwargs.get('null', True)
|
||
|
kwargs['verbose_name'] = kwargs.get('verbose_name', '描述')
|
||
|
kwargs['help_text'] = kwargs.get('help_text', '') or kwargs.get('verbose_name', '描述')
|
||
|
super().__init__(*args, **kwargs)
|
||
|
|
||
|
|
||
|
class UserForeignKeyField(models.ForeignKey):
|
||
|
"""
|
||
|
user = UserForeignKeyField()
|
||
|
"""
|
||
|
|
||
|
def __init__(self, to=None, on_delete=None, related_name=None, related_query_name=None, limit_choices_to=None,
|
||
|
parent_link=False, to_field=None, db_constraint=False, **kwargs):
|
||
|
if to is None:
|
||
|
to = get_user_model()
|
||
|
if to_field is None:
|
||
|
to_field = 'id'
|
||
|
if on_delete is None:
|
||
|
on_delete = SET_NULL
|
||
|
kwargs['verbose_name'] = kwargs.get('verbose_name', '关联的用户')
|
||
|
kwargs['help_text'] = kwargs.get('help_text', '') or kwargs.get('verbose_name', '关联的用户')
|
||
|
kwargs['editable'] = kwargs.get('default', False)
|
||
|
super().__init__(to, on_delete, related_name, related_query_name, limit_choices_to, parent_link, to_field,
|
||
|
db_constraint, **kwargs)
|
||
|
|
||
|
|
||
|
class UpdateDateTimeField(models.DateTimeField):
|
||
|
"""
|
||
|
update_datetime = ModifyDateTimeField()
|
||
|
"""
|
||
|
|
||
|
def __init__(self, verbose_name=None, name=None, auto_now=True, auto_now_add=False, **kwargs):
|
||
|
verbose_name = verbose_name or '修改时间'
|
||
|
kwargs['help_text'] = kwargs.get('help_text', '修改时间')
|
||
|
kwargs['editable'] = kwargs.get('default', False)
|
||
|
kwargs['blank'] = kwargs.get('blank', True)
|
||
|
kwargs['null'] = kwargs.get('null', True)
|
||
|
super().__init__(verbose_name, name, auto_now, auto_now_add, **kwargs)
|
||
|
|
||
|
|
||
|
class CreateDateTimeField(models.DateTimeField):
|
||
|
"""
|
||
|
create_datetime = CreateDateTimeField()
|
||
|
"""
|
||
|
|
||
|
def __init__(self, verbose_name=None, name=None, auto_now=False, auto_now_add=True, **kwargs):
|
||
|
verbose_name = verbose_name or '创建时间'
|
||
|
kwargs['help_text'] = kwargs.get('help_text', '创建时间')
|
||
|
kwargs['editable'] = kwargs.get('default', False)
|
||
|
kwargs['blank'] = kwargs.get('blank', True)
|
||
|
kwargs['null'] = kwargs.get('null', True)
|
||
|
super().__init__(verbose_name, name, auto_now, auto_now_add, **kwargs)
|
||
|
|
||
|
|
||
![]() |
class CreatorCharField(models.CharField):
|
||
![]() |
"""
|
||
|
creator = CreatorCharField()
|
||
|
"""
|
||
|
|
||
|
def __init__(self, *args, **kwargs):
|
||
|
kwargs['max_length'] = kwargs.get('max_length', 255)
|
||
|
kwargs['null'] = kwargs.get('null', True)
|
||
|
kwargs['blank'] = kwargs.get('blank', True)
|
||
|
kwargs['verbose_name'] = kwargs.get('verbose_name', '创建者')
|
||
|
kwargs['help_text'] = kwargs.get('help_text', '该记录的创建者')
|
||
|
super().__init__(*args, **kwargs)
|
||
|
|
||
|
|
||
![]() |
class ModifierCharField(models.CharField):
|
||
![]() |
"""
|
||
|
modifier = ModifierCharField()
|
||
|
"""
|
||
|
|
||
|
def __init__(self, *args, **kwargs):
|
||
|
kwargs['max_length'] = kwargs.get('max_length', 255)
|
||
|
kwargs['null'] = kwargs.get('null', True)
|
||
|
kwargs['blank'] = kwargs.get('blank', True)
|
||
|
kwargs['verbose_name'] = kwargs.get('verbose_name', '修改者')
|
||
|
kwargs['help_text'] = kwargs.get('help_text', '该记录最后修改者')
|
||
|
super().__init__(*args, **kwargs)
|