1 创建多对多字段
class BaseModel(Model):
class Meta:
database = db
class Admin(BaseModel):
'''管理员表'''
email = CharField(verbose_name='邮箱', max_length=30)
password = CharField(verbose_name='密码', max_length=12)
name = CharField(verbose_name='姓名', max_length=10)
creator_name = CharField(verbose_name='添加人姓名', max_length=10)
create_time = DateTimeField(verbose_name='添加时间', default=datetime.now)
is_deleted = BooleanField(verbose_name='是否被删除', default=False)
deletor_name = CharField(verbose_name='删除人姓名', max_length=10, null=True)
delete_time = DateTimeField(verbose_name='删除时间', null=True)
class Meta:
db_table = 'admin'
class Project(BaseModel):
'''项目表'''
project_name = CharField(verbose_name='项目名称', max_length=10, unique=True)
product_name = CharField(verbose_name='产品名称', max_length=15, default='')
creator_name = CharField(verbose_name='添加人姓名', max_length=10)
create_time = DateTimeField(verbose_name='添加时间', default=datetime.now)
is_deleted = BooleanField(verbose_name='是否被删除', default=False)
deletor_name = CharField(verbose_name='删除人姓名', max_length=10, null=True)
delete_time = DateTimeField(verbose_name='删除时间', null=True)
admins = ManyToManyField(Admin, backref='projects')
class Meta:
db_table = 'project'
class Module(BaseModel):
'''模块表'''
name = CharField(verbose_name='模块名', max_length=10)
admins = ManyToManyField(Admin, backref='modules')
class Meta:
db_table = 'module'
2 增加
with db.atomic():
admin = Admin(name=name, email=email, password=password, creator_name=cur_user_name)
admin.save()
if proj_ids:
projects = Project.select().where(Project.id.in_(proj_ids))
admin.projects.add(projects)
if module_ids:
modules = Module.select().where(Module.id.in_(module_ids))
admin.modules.add(modules)
3 删除
projects = Project.select().join.where(admin.id==admin_id)
admin.projects.remove(projects)
4 修改
admin.projects.clear()
if proj_ids:
projects = Project.select().where(Project.id.in_(proj_ids))
admin.projects.add(projects)
admin.modules.clear()
if module_ids:
modules = Module.select().where(Module.id.in_(module_ids))
admin.modules.add(modules)
5 查询
with db.atomic():
admins = Admin.select().where(Admin.is_deleted == False)
result = []
for admin in admins:
user_info = {
'id': admin.id,
'name': admin.name,
'email': admin.email,
'creatorName': admin.creator_name,
'createTime': int(admin.create_time.timestamp()),
'projectPermission': [{'id': project.id, 'name': project.project_name}
for project in admin.projects],
'modulePermission': [{'id': module.id, 'name': module.name}
for module in admin.modules],
}
result.append(user_info)