1、在address->models.py中定义模型
from django.db import models
from utils.modles import BaseModel,CoreModel
from mysystem.models import Users
class Area(models.Model):
"""省市区"""
name = models.CharField(max_length=50, verbose_name='名称')
parent = models.ForeignKey('self', on_delete=models.SET_NULL, related_name='subs', null=True, blank=True, verbose_name='上级行政区划')#外键链接自己
status = models.BooleanField(default=True,verbose_name="状态")
#related_name='subs' ,意思为如果想找自己的子级,就可以通过area.subs找到自己下级所有的area区域,我们也可以这样调用获取市: area.area_set.all() ==> area.subs.all()
#on_delete=models.SET_NULL: 如果省删掉了,省内其他的信息为 NULL
class Meta:
db_table = 'tb_areas'
verbose_name = '省市区'
verbose_name_plural = verbose_name
def __str__(self):
return self.name
其中BaseModel为只包含create_datetime 和 update_datetime 字段(不需要后端管理,只需要提供前端访问选用)
class BaseModel(models.Model):
"""
基本模型,可直接继承使用,一般不需要使用审计字段的模型可以使用
覆盖字段时, 字段名称请勿修改
"""
create_datetime = models.DateTimeField(auto_now=True, null=True, blank=True,verbose_name='创建时间')
update_datetime = models.DateTimeField(auto_now_add=True,null=True, blank=True, verbose_name='更新时间')
class Meta:
abstract = True # 表示该类是一个抽象类,只用来继承,不参与迁移操作
verbose_name = '基本模型'
verbose_name_plural = verbose_name
其中 CoreModel一般后端接口权限控制时需要的(后端管理端用此)
class CoreModel(models.Model):
"""
核心标准抽象模型模型,可直接继承使用
增加审计字段, 覆盖字段时, 字段名称请勿修改, 必须统一审计字段名称
"""
id = models.CharField(max_length=100, primary_key=True, default=make_uuid, help_text="Id", verbose_name="Id")
description = models.CharField(max_length=100, verbose_name="描述", null=True, blank=True, help_text="描述")
creator = models.ForeignKey(to=settings.AUTH_USER_MODEL, related_query_name='creator_query', null=True,
verbose_name='创建人', help_text="创建人", on_delete=models.SET_NULL, db_constraint=False)
modifier = models.CharField(max_length=100, null=True, blank=True, help_text="修改人", verbose_name="修改人")
dept_belong_id = models.CharField(max_length=100, help_text="数据归属部门", null=True, blank=True, verbose_name="数据归属部门")
update_datetime = models.DateTimeField(auto_now=True, null=True, blank=True, help_text="修改时间", verbose_name="修改时间")
create_datetime = models.DateTimeField(auto_now_add=True, null=True, blank=True, help_text="创建时间",verbose_name="创建时间")
class Meta:
abstract = True
verbose_name = '核心模型'
verbose_name_plural = verbose_name