联合唯一可以使用django中的unique_together,和DRF中的UniqueTogetherValidator->https://www.django-rest-framework.org/api-guide/validators/#uniquetogethervalidator

unique_together

model

class UserFav(models.Model):
"""
用户收藏
"""
user = models.ForeignKey(User,verbose_name="用户",on_delete=False)
goods = models.ForeignKey(Goods,verbose_name="商品",on_delete=False)
add_time = models.DateTimeField(default=datetime.now,verbose_name="用户收藏") class Meta:
verbose_name = "用户收藏"
verbose_name_plural=verbose_name
unique_together = (('user','goods'),) def __str__(self):
return f'{self.goods.name}'

view

from django.shortcuts import render

from rest_framework import mixins,viewsets
from .serializers import UserFavSerializer
from .models import UserFav
# Create your views here. class UserFavSetview(mixins.CreateModelMixin,mixins.ListModelMixin,
mixins.DestroyModelMixin,viewsets.GenericViewSet): serializer_class = UserFavSerializer
queryset = UserFav.objects.all()

serializer

from rest_framework import serializers
from .models import UserFav
from rest_framework.validators import UniqueTogetherValidator class UserFavSerializer(serializers.ModelSerializer):
user = serializers.HiddenField(default=serializers.CurrentUserDefault()) class Meta:
model = UserFav
fields = ('id','user', 'goods')

UniqueTogetherValidator

基于unique_together只需改serializer

from rest_framework import serializers
from .models import UserFav
from rest_framework.validators import UniqueTogetherValidator class UserFavSerializer(serializers.ModelSerializer):
user = serializers.HiddenField(default=serializers.CurrentUserDefault()) class Meta:
model = UserFav
fields = ('id','user', 'goods')
validators = [UniqueTogetherValidator(queryset=UserFav.objects.all(),fields=('user','goods'),message='您已收藏')]

最新文章

  1. Python 3 —— 控制语句
  2. Android Studio快捷键每日一练(1)
  3. 当 IDENTITY_INSERT 设置为 OFF 时,不能向表 '#TT' 中的标识列插入显式值。 sql server 临时表
  4. lua库函数
  5. TIANKENG’s restaurant
  6. 用Jpush极光推送实现抓取特定某个用户Log到七牛云服务器
  7. c语言筛选质数
  8. Android中GridView的使用——使用自带的SimpleAdapter(简单适配器)
  9. 【正则表达式】--python(表示字符)
  10. PhpStorm中报 “Cannot run program git.exe, 系统找不到指定的文件” 
  11. g第十四周,十五周作业
  12. python多线程和多进程
  13. nginx配置静态webserver
  14. js 日期排序(sort)
  15. 移动端--touch事件与点透问题
  16. Mac逆向--思维导图
  17. P4811 C’s problem(c)
  18. Java通过JDBC进行简单的增删改查(以MySQL为例)
  19. Failed to execute goal org.mybatis.generator:mybatis-generator-maven-plugin:generate (default-cli) on project : <properties> resource does not exist
  20. SpringMVC中的参数绑定总结

热门文章

  1. eclipse 创建dynamic web project不能运行
  2. 部分流媒体协议及流媒体开发框架vitamio
  3. python 爬预警没解析前的
  4. OpenMP 《并行程序设计导论》的补充代码
  5. CentOS 多版本python安装pip
  6. [/usr/local/openssl//.openssl/include/openssl/ssl.h] Error 127
  7. interrupt和isInterrupted的基本使用方法
  8. react-native 组件的导入、导出
  9. MVC DbContext
  10. Java语句