博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Vue + Django 2.0.6 学习笔记 8.3 用户收藏接口实现
阅读量:4127 次
发布时间:2019-05-25

本文共 1979 字,大约阅读时间需要 6 分钟。

用户收藏属于用户的操作行为 所以放到user_operation中

# views.pyfrom rest_framework import viewsetsfrom rest_framework import  mixinsfrom .models import UserFavfrom .serializers import UserFavSerializer# Create your views here.# 创建mixin, 展示mixin, 删除mixinclass UserFavViewset(mixins.CreateModelMixin, mixins.ListModelMixin, mixins.DestroyModelMixin, viewsets.GenericViewSet):    """    用户收藏功能    """    queryset = UserFav.objects.all()    serializer_class = UserFavSerializer

然后写UserFavSerializer

# encoding:utf-8from rest_framework import serializers用于唯一联合过滤用from rest_framework.validators import UniqueTogetherValidatorfrom user_operation.models import UserFavclass UserFavSerializer(serializers.ModelSerializer):# 这里的user字段的作用是某人返回当前用户的收藏信息。 如果不加该句的话 默认是会返回左右用户的收藏信息    user = serializers.HiddenField(        default=serializers.CurrentUserDefault()        )    class Meta:        model = UserFav# 该字段是用于防止用户重复收藏同一个字段,如果不加这个。 用户可以反复收藏同一个字段。 # 这是通过Serializer来拦截。 还是可以通过model来拦截(数据库表做联合唯一)        # 联合唯一 必须要写在Meta 因为它作用于多个字段 而不是单独的某个字段        # 如果是作用域某个字段之上,那就写到上面去        validators = [            UniqueTogetherValidator(                queryset=UserFav.objects.all(),                fields=('user', 'goods'),            # 自定义错误消息                message='已经收藏'            )        ]        fields = ('user', 'goods', 'id')

model的联合唯一

class UserFav(models.Model):    """    用户收藏    """    user = models.ForeignKey(User, verbose_name=u'用户', on_delete=models.CASCADE)    goods = models.ForeignKey(Goods, verbose_name=u'商品', on_delete=models.CASCADE)    add_time = models.DateTimeField(default=datetime.now, verbose_name=u'添加时间')    class Meta:        verbose_name = u'用户收藏'        verbose_name_plural = verbose_name# 这里 但是我个人不介意这么干  这样数据库的表就不灵活了        unique_together = ("user", "goods")    def __str__(self):        return self.user.name

关于返回当前用户的收藏信息的文档说明

联合唯一查询的文档说明:

示例

urls.py:

from user_operation.views import UserFavViewsetrouter.register(r'userfavs', UserFavViewset, base_name='userfavs')

完结

转载地址:http://liepi.baihongyu.com/

你可能感兴趣的文章
fc 8 安装xen
查看>>
Linux 汇编语言开发指南
查看>>
马拉松(一)
查看>>
ES TCP客户端方式自动映射mapping写入异常
查看>>
ES自定义Analyzer扩展IK分词
查看>>
记录一次系统计算逻辑优化
查看>>
创建Spring Boot项目
查看>>
Spring Boot 扫描不到Controller
查看>>
MySQL 事务隔离级别相关官方文档翻译
查看>>
Eureka服务发现与注册
查看>>
事务隔离级别与脏读、不可重复读、幻读
查看>>
Landroid/support/v7/internal/widget/ActionBarOverlayLayout;.stopNestedScroll
查看>>
Genymotion首次运行程序出现错误Installation error: INSTALL_FAILED_CPU_ABI_INCOMPATIBLE
查看>>
以太坊不同客户端的定义和用途
查看>>
以太坊客户端mist和geth加快区块同步速度的方法
查看>>
TheDAO被攻击事件考察报告
查看>>
以太坊常用网址
查看>>
如何分叉以太坊并变成自己的私链?
查看>>
区块链开发(一)搭建基于以太坊的私有链环境
查看>>
BlockChain 与 Ethereum 介绍
查看>>