模块应用代码设计

module\models设计

模块表设计比较简单,基本和项目表一致,但是有个地方需要注意下,模块肯定属于项目,所以我们需要再模块表设个外键。

  1. from django.db import models
  2. from project.models import Projects
  3. # Create your models here.
  4. class Modules(models.Model):
  5. # on_delete=models.PROTECT作用:关联数据是受保护的,无法删除
  6. project = models.ForeignKey('project.Projects', on_delete=models.PROTECT)
  7. name = models.CharField(max_length=20, unique=True)
  8. desc = models.CharField(max_length=200, null=True, blank=True, default='')
  9. create_time = models.DateTimeField(auto_now_add=True)
  10. update_time = models.DateTimeField(auto_now=True)
  11. class Meta:
  12. # i.db_table指定创建的数据表名称
  13. db_table = 'module'
  14. # 为当前数据表设置中文描述信息
  15. verbose_name = '模块'
  16. verbose_name_plural = verbose_name
  17. ordering = ['id']
  18. def __str__(self):
  19. return self.name

生成表

生成迁移脚本

(env) D:\code\caseplatform>python manage.py makemigrations

生成数据表

(env) D:\code\caseplatform>python manage.py migrate

module\serializers.py设计

  1. from rest_framework import serializers
  2. from .models import Modules
  3. class ModuleSerializer(serializers.ModelSerializer):
  4. class Meta:
  5. model = Modules
  6. exclude = ('update_time',)
  7. extra_kwargs = {
  8. "create_time": {
  9. "read_only": True,
  10. "format": "%Y年%m月%d日 %H:%M:%S"
  11. }
  12. }

module\views 设计

  1. from .serializers import ModuleSerializer
  2. from .models import Modules
  3. from rest_framework import viewsets, permissions
  4. # Create your views here.
  5. class ModuleViewSet(viewsets.ModelViewSet):
  6. permission_classes = [permissions.IsAuthenticated]
  7. search_fields = ['=name']
  8. ordering_fields = ['name']
  9. queryset = Modules.objects.all()
  10. serializer_class = ModuleSerializer

module\urls 设计

  1. from module import views
  2. from rest_framework import routers
  3. # 创建SimpleRouter路由对象
  4. router = routers.SimpleRouter()
  5. # 注册projects
  6. router.register('modules', views.ModuleViewSet)
  7. urlpatterns = router.urls