class Path(Base): title = models.CharField('路径标题', max_length=24) img = models.ImageField('路径图片', upload_to='path', null=True) desc = models.CharField('路径描述', max_length=255) user = models.ManyToManyField('user.User', blank=True) def course_total(self): count = 0 for jd in self.jieduan.all(): count = count + jd.courses.count() return count class Meta: db_table = "tb_path" def __str__(self): return self.title
#阶段表 class JieDuan(Base): title = models.CharField('阶段名', max_length=24) serial_num= models.IntegerField('阶段xuhao') path=models.ForeignKey(Path,related_name='jieduan',on_delete=models.SET_NULL,null=True) courses = models.ManyToManyField(Course, blank=True) class Meta: db_table="tb_jieduan" def __str__(self): return "%s-第%s阶段-%s" %(self.path.title,self.serial_num,self.title)
#序列化 class JieDuanSerializer(serializers.ModelSerializer): courses=CourseSerializer(many=True) class Meta: model =JieDuan fields = "__all__" class PathSerializer(serializers.ModelSerializer): # jieduan=JieDuanSerializer(many=True) class Meta: model=Path fields="__all__" class PathDeepSerializer(serializers.ModelSerializer): jieduan=JieDuanSerializer(many=True) class Meta: model=Path fields="__all__"
#注册子路由 from django.contrib import admin from django.urls import path,include from django.conf.urls.static import static from syl import settings urlpatterns = [ path('admin/', admin.site.urls), path('user/', include('user.urls')), path('verify/', include('verifications.urls')), path('oauth/', include('oauth.urls')), path('course/',include('course.urls')) ] #主路由 router.register(r'path',views.PathVIewSet)
#进行创建视图 class PathVIewSet(viewsets.ModelViewSet): queryset = Path.objects.all() serializer_class =PathSerializer def get_serializer_class(self): if self.action=="list": return PathSerializer else: return PathDeepSerializer