这两节主要是说获取商品类别的1 2 3类的列表和某个类的详情

我直接上代码吧

views.py:

from .serializers import CategorySerializer

class CategoryViewset(mixins.ListModelMixin,
# 继承这个类是为了前端请求某个字段的详细内容所用到。
# 也就是说 只需要添加继承了这个类 其他地方都不需要在更改,就可以通过get+id获取到某个字段的详情。
mixins.RetrieveModelMixin,
viewsets.GenericViewSet):

# 这个注释这样写是为了rest_framework自动生成文档功能的自动对类的描述所使用的

"""
list:
商品分类列表数据
"""
queryset = GoodsCategory.objects.filter(category_type=1)
serializer_class = CategorySerializer
serializers.py

from rest_framework import serializers

from goods.models import Goods, GoodsCategory

class CategorySerializer3(serializers.ModelSerializer):
class Meta:
model = GoodsCategory
fields = "__all__"

class CategorySerializer2(serializers.ModelSerializer):
# 2.再看这里
# 获得3级分类 反正就这么一层一层嵌套获取
sub_cat = CategorySerializer3(many=True)
class Meta:
model = GoodsCategory
fields = "__all__"

class CategorySerializer(serializers.ModelSerializer):

# 1. 先看这里
# 这是第一层 sub_cat需要跟model中的字段键related_name 一致
# 这样就能获得第二层的数据(也就是二级分类)
# 必须要加 many=True 因为有可能有些数据是没有二级或三级分类数据

sub_cat = CategorySerializer2(many=True)
class Meta:
model = GoodsCategory
fields = "__all__"
model.py 只是展示用。

class GoodsCategory(models.Model):
"""
商品类别
"""
CATEGORY_TYPE = (
(1, u'一级类目'),
(2, u'二级类目'),
(3, u'三级类目')
)
name = models.CharField(default='', max_length=30, verbose_name=u'类别名', help_text=u'类别名')
code = models.CharField(default='', max_length=30, verbose_name=u'类别code', help_text=u'类别code' )
desc = models.TextField(default='', verbose_name=u'类别描述', help_text=u'类别描述')
category_type = models.IntegerField(choices=CATEGORY_TYPE, verbose_name=u'类目级别', help_text=u'类目级别')

# 看 就这里 就这个字段 因为这个字段是可空的 所以 在serializers那边必须设置many=True

parent_category = models.ForeignKey("self", null=True, blank=True, verbose_name=u'父类别', help_text=u'父类别',
related_name='sub_cat', on_delete=models.CASCADE)
is_tab = models.BooleanField(default=False, verbose_name=u'是否导航', help_text=u'是否导航')
add_time = models.DateTimeField(default=datetime.now, verbose_name=u'添加时间')

class Meta:
verbose_name = u'商品类别'
verbose_name_plural = verbose_name

def __str__(self):
return self.name
这样就完成了商品类别的数据接口的返回:

url:

然后这是某类的详细内容:

嗯。。从一开始学习到这里感觉。。。rest_framework好屌  那我之前写那么多VIEW,form, url 是为了啥= =

对了 5.8 5.9都是讲理论的我就写了 直接贴一个层级关系吧 现在还是云里雾里  等教程过了一遍之后再回来这里再看两遍应该会更有效果

完结
---------------------

最新文章

  1. 【数据结构】简单谈一谈二分法和二叉排序树BST查找的比较
  2. 设计模式--命令模式Command(对象行为型)
  3. HTML-embed标签详解
  4. Android View绘制过程
  5. 【LINUX】Linux学习小结
  6. LeetCode100:Same Tree
  7. 解决IE下z-index的bug
  8. <Linux下FTP服务的搭建>
  9. dorado7第一次使用感受
  10. Learning WCF Chapter2 Service Description
  11. 算法的稳定性(Stability of Sorting Algorithms)
  12. js监听键盘方向键事件
  13. spring Bean类自动装载实现
  14. IOS 模块并且发布到NPM
  15. struts2实现文件上传和下载
  16. haar特征(转)
  17. 线段树||BZOJ1593: [Usaco2008 Feb]Hotel 旅馆||Luogu P2894 [USACO08FEB]酒店Hotel
  18. centos httpd开启https服务并申请免费https
  19. IntelliJ IDEA 2018.3发布
  20. 样式加载不出来,浏览器控制台报错:Resource interpreted as Stylesheet but transferred with MIME type text/html

热门文章

  1. PP-生产订单状态
  2. Ubuntu上配置Eclipse:安装CDT【转】
  3. YTU 1011: Rails
  4. mysql查询表的字符集
  5. 【T^T 1736】【FJUTOJ 1077】排座位
  6. CodeForces-451E:Devu and Flowers (母函数+组合数+Lucas定理)
  7. python3中urllib的基本使用
  8. baiduTemplate 基本知识总结
  9. ubuntu中desktop与alternate版本的区别(转载)
  10. Fiddler对https抓包时,提示"HTTPS decryption is disabled."原因及破解