Skip to content
本页目录

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

Released under the Apache License 2.0