zoukankan      html  css  js  c++  java
  • 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='您已收藏')]
  • 相关阅读:
    python 常用的模块(hashlib)转
    python 常用的模块(struct)转
    python 常用的模块(base64)转
    python 常用的模块(collections)转
    django xadmin的使用和改造
    django静态html中做动态变化
    django 用model来简化form
    InstallShield2015制作安装包----------安装后实现电脑开机自启动
    InstallShield2015创建安装包
    InstallShield :cannot rename directory ...
  • 原文地址:https://www.cnblogs.com/chenyishi/p/10661826.html
Copyright © 2011-2022 走看看