模块应用代码设计
module\models
设计
模块表设计比较简单,基本和项目表一致,但是有个地方需要注意下,模块肯定属于项目,所以我们需要再模块表设个外键。
from django.db import models
from project.models import Projects
# Create your models here.
class Modules(models.Model):
# on_delete=models.PROTECT作用:关联数据是受保护的,无法删除
project = models.ForeignKey('project.Projects', on_delete=models.PROTECT)
name = models.CharField(max_length=20, unique=True)
desc = models.CharField(max_length=200, null=True, blank=True, default='')
create_time = models.DateTimeField(auto_now_add=True)
update_time = models.DateTimeField(auto_now=True)
class Meta:
# i.db_table指定创建的数据表名称
db_table = 'module'
# 为当前数据表设置中文描述信息
verbose_name = '模块'
verbose_name_plural = verbose_name
ordering = ['id']
def __str__(self):
return self.name
生成表
生成迁移脚本
(env) D:\code\caseplatform>python manage.py makemigrations
生成数据表
(env) D:\code\caseplatform>python manage.py migrate
module\serializers.py
设计
from rest_framework import serializers
from .models import Modules
class ModuleSerializer(serializers.ModelSerializer):
class Meta:
model = Modules
exclude = ('update_time',)
extra_kwargs = {
"create_time": {
"read_only": True,
"format": "%Y年%m月%d日 %H:%M:%S"
}
}
module\views
设计
from .serializers import ModuleSerializer
from .models import Modules
from rest_framework import viewsets, permissions
# Create your views here.
class ModuleViewSet(viewsets.ModelViewSet):
permission_classes = [permissions.IsAuthenticated]
search_fields = ['=name']
ordering_fields = ['name']
queryset = Modules.objects.all()
serializer_class = ModuleSerializer
module\urls
设计
from module import views
from rest_framework import routers
# 创建SimpleRouter路由对象
router = routers.SimpleRouter()
# 注册projects
router.register('modules', views.ModuleViewSet)
urlpatterns = router.urls