django-vue-admin脚⼿架快速开发CRUD教程本页⾯⽰例中的project均为demo名,可替代成⾃⼰的项⽬名
需求
创建⼀个项⽬管理app;
字段包含:项⽬名称、项⽬编码、项⽬负责⼈;
功能:包含项⽬管理的增删改查、导出。
后端
1. 创建App
通过命令创建App python3 manage.py createapp project
2. 创建 models 模型
1. 在dvadmin-backend/apps/project/models/ ⽬录下,创建 project.py ⽂件(models⽬录下可创建多个模型⽂件,建议⼀个.py ⽂
件为⼀个models模型)
1. 编写项⽬管理模型内容 dvadmin-backend/apps/project/models/project.py,如下:
f import settings
from dels import CharField, ForeignKey, CASCADE, SET_NULL
from vadmin.dels import CoreModel
# 继承框架封装的模型类 CoreModel
class Project(CoreModel):
name = CharField(max_length=8, verbose_name='项⽬名称')
code = CharField(max_length=8, verbose_name='项⽬编码')
# 在关联⽤户时,建议使⽤ to=settings.AUTH_USER_MODEL 进⾏关联
person = ForeignKey(to=settings.AUTH_USER_MODEL, null=True, verbose_name='项⽬负责⼈', related_name='project_person',
on_delete=SET_NULL, db_constraint=False)
# 在普通⼀多⼀、⼀对多、多对多时,to='App名.模块名' 进⾏关联
dept = ForeignKey(to='permission.dept', on_delete=CASCADE, verbose_name="项⽬所属部门", related_name='project_dept',
db_constraint=False)
class Meta:
verbose_name ='项⽬管理'
verbose_name_plural = verbose_name
def__str__(self):
return f"{self.name}项⽬"
1. 在dvadmin-backend/apps/project/models/__init__.py 中导⼊模型
from.project import Project
3. 迁移数据库⽂件
执⾏迁移命令:
python3 manage.py makemigrations project
python3 manage.py migrate project
迁移成功后,通过数据库可查看到
可看到字段⽐模型中多出⼏个,是因为继承了框架封装的 CoreModel 所带的。
4. 创建过滤器、序列化器、视图、路由接⼝
1. 创建过滤器,通过 dvadmin-backend/apps/project/filters.py ⽂件中,添加过滤器内容:
import django_filters
class ProjectFilter(st_framework.FilterSet): """
项⽬管理简单序过滤器
"""
# 通过 lookup_expr 可进⾏模糊查询,其他配置可⾃⾏百度    name = django_filters.CharFilter(lookup_expr='icontains')
class Meta:
model = Project
exclude =('description','creator','modifier')
2) 创建序列化器
from rest_framework import serializers
python新建项目教程
from vadmin.op_drf.serializers import CustomModelSerializer
# ================================================= #
# ************** 项⽬管理序列化器  ************** #
# ================================================= #
class ProjectSerializer(CustomModelSerializer):
"""
项⽬管理简单序列化器
"""
class Meta:
model = Project
fields ='__all__'
class ProjectCreateUpdateSerializer(CustomModelSerializer):
"""
项⽬管理创建/更新时的列化器
"""
# 此处可写定制的创建/更新内容
def validate(self, attrs:dict):
return super().validate(attrs)
class Meta:
model = Project
fields ='__all__'
class ExportProjectSerializer(CustomModelSerializer):
"""
导出项⽬管理简单序列化器
"""
person__username = serializers.SerializerMethodField(read_only=False)
dept__deptName = serializers.SerializerMethodField(read_only=False)
def get_person__username(self, obj):
return""if not hasattr(obj,'person')else obj.person.username
def get_dept__deptName(self, obj):
return""if not hasattr(obj,'dept')else obj.dept.deptName
class Meta:
model = Project
fields =('id','name','code','person','person__username','dept','dept__deptName','creator','modifier', 'description')
1. 创建视图

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。