实验楼路径模块具体操作

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

 

 

posted @ 2020-10-13 21:05  洋洋洋ax  阅读(81)  评论(0编辑  收藏  举报

载入天数...载入时分秒...