这两节主要是说获取商品类别的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都是讲理论的我就写了 直接贴一个层级关系吧 现在还是云里雾里  等教程过了一遍之后再回来这里再看两遍应该会更有效果

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

Vue + Django 2.0.6 学习笔记 6.1-6.2 商品类别数据接口的更多相关文章

  1. node+webpack环境搭建 vue.js 2.0 基础学习笔记

    npm install -g vue //全局安装vue npm install -g webpack //全局安装webpack npm install -g vue-cli //全局安装vue-c ...

  2. 从零开始搭建.NET Core 2.0 API(学习笔记一)

    从零开始搭建.NET Core 2.0 API(学习笔记一) 一. VS 2017 新建一个项目 选择ASP.NET Core Web应用程序,再选择Web API,选择ASP.NET Core 2. ...

  3. 【Spring学习笔记-MVC-3.1】SpringMVC返回Json数据-方式1-扩展

    <Spring学习笔记-MVC>系列文章,讲解返回json数据的文章共有3篇,分别为: [Spring学习笔记-MVC-3]SpringMVC返回Json数据-方式1:http://www ...

  4. EF学习笔记(八):更新关联数据

    学习笔记主目录链接:ASP.NET MVC5 及 EF6 学习笔记 - (目录整理) 上一篇链接:EF学习笔记(七):读取关联数据 本篇原文链接:Updating Related Data 本篇主要考 ...

  5. 【EF6学习笔记】(八)更新关联数据

    上一篇链接:EF学习笔记(七):读取关联数据 本篇原文链接:Updating Related Data 本篇主要考虑对于有关联的数据进行新增.删除.更新操作:比如Course .Instructor: ...

  6. JavaWeb和WebGIS学习笔记(三)——GeoServer 发布shp数据地图

    系列链接: Java web与web gis学习笔记(一)--Tomcat环境搭建 Java web与web gis学习笔记(二)--百度地图API调用 JavaWeb和WebGIS学习笔记(三)-- ...

  7. 7- vue django restful framework 打造生鲜超市 -商品类别数据展示(上)

    Vue+Django REST framework实战 搭建一个前后端分离的生鲜超市网站 Django rtf 完成 商品列表页 并没有将列表页的数据json 与前端的页面展示结合起来 讲解如果将dr ...

  8. Swift 2.0 字符串学习笔记(建议掌握OC字符串知识的翻阅)

    自己公司开现在使用OC语言在写,但Swift似乎是苹果更推荐使用的开发语言,估计也是未来开发的趋势,自己以前有接触swift,但又由于公司的项目赶,也没有时间去好好地学习这款开发语言.现在年底了,项目 ...

  9. Django 2.0.3 使用笔记

    运行环境: Python 3.5.2 Django 2.0.3 Django Admin中model显示为中文 定义model时,定义一个Meta对象,设置需要显示的中文名称.verbose_name ...

随机推荐

  1. HDU2444 The Accomodation of Students —— 二分图最大匹配

    题目链接:https://vjudge.net/problem/HDU-2444 The Accomodation of Students Time Limit: 5000/1000 MS (Java ...

  2. HubbleDotNet 开源全文搜索数据库项目--为数据库现有表或视图建立全文索引(三) 多表关联全文索引模式

    关系型数据库中,多表关联是很常见的事情,HubbleDotNet 可以对部分情况的多表关联形式建立关联的全文索引,这样用户就不需要专门建一个大表 来解决多表关联时的全文索引问题. 下面以 为数据库现有 ...

  3. 六.OC基础--1. id和instancetype类型,2.动态类型检测,3.响应方法,构造方法,4.重写构造方法,5.自定义构造方法

    1. id和instancetype类型, id和instancetype类型区别: 1. id和instancetype都可以用来作为方法的返回值 2. id可以用来定义类型,instancetyp ...

  4. AutoIT: WinActivate可以把要操作的窗口提前。

    If WinExists("[CLASS:Notepad2]") Then Local $hWnd = WinWait() ; Convert the handle to a st ...

  5. JS处理Cookie

    <script>function GetCookieVal(offset)//获得Cookie解码后的值{var endstr = document.cookie.indexOf (&qu ...

  6. IDE工具的[多行光标编辑模式]

    Sublime Text3:Ctrl+Alt+上下键 Eclipse:Shift+Alt+A,进入退出多光标模式 IDEA:Shift + ctrl + alt + 鼠标左键 收集链接 IDEA:ht ...

  7. bzoj 1180: [CROATIAN2009]OTOCI【LCT】

    一道几乎是板子的LCT,但是沉迷数学很久时候突然1A了这道题还是挺开心的 #include<iostream> #include<cstdio> using namespace ...

  8. [C++11新特性] 智能指针详解

    动态内存的使用很容易出问题,因为确保在正确的时间释放内存是极为困难的.有时我们会忘记释放内存产生内存泄漏,有时提前释放了内存,再使用指针去引用内存就会报错. 为了更容易(同时也更安全)地使用动态内存, ...

  9. _bzoj1015 [JSOI2008]星球大战starwar【并查集】

    传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=1015 倒过来做就ok了. #include <cstdio> #include ...

  10. 自动化中Java面试题

    1.面向对象的特征有哪些方面?答:面向对象的特征主要有以下几个方面:- 抽象:抽象是将一类对象的共同特征总结出来构造类的过程,包括数据抽象和行为抽象两方面.抽象只关注对象有哪些属性和行为,并不关注这些 ...