• django drf unique_together和UniqueTogetherValidator


    联合唯一可以使用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='您已收藏')]
  • 相关阅读:
    多表查询+多对多 三表连查+子查询
    几个重要的关键字where+group by +having +order by + limit
    拷贝表 *** 与******
    一对一关系的补充
    几种基本的约束和外键(一对一 多对多 多对一)级联关系
    创建表的完整语法 数字类型(整型 浮点型) 字符型 时间和日期类型 集合和枚举类型
    随记Litter note
    视图 触发器 事务(重要) 存储过程 内置函数 流程控制 索引
    luogu P2774 方格取数问题
    luogu P4014 分配问题
  • 原文地址:https://www.cnblogs.com/chenyishi/p/10661826.html
Copyright © 2020-2023  润新知