繁体   English   中英

验证到 staff_user:Django Restframework

[英]Validate to staff_user : Django Restframework

我希望只有 staff_user 可以添加产品,并且最多可以添加 10 个产品。

我可能是 django 的新手。 我已经尝试过类似下面的方法,但我不知道如何向 staff_user 验证他最多可以添加 10 个产品。

如果有人可以帮助我解决我想要解决的问题,那就太好了。 非常感谢你。

模型.py

class Cuboid(models.Model):
    created_by = models.ForeignKey(User, on_delete=models.CASCADE)
    title = models.CharField(max_length=80)
    length = models.ForeignKey('FilterLength', on_delete=models.CASCADE)
    created_on= models.DateTimeField(default=datetime.now())


序列化程序.py

class CuboidCreateSerializers(serializers.ModelSerializer):
    class Meta:
        model = Cuboid
        fields = "__all__"

视图.py

class CuboidCreateAPIView(generics.CreateAPIView):
    model = Cuboid
    queryset = Cuboid.objects.all()
    serializer_class = CuboidCreateSerializers
    permission_classes = [IsStaff]



使用DRF 的字段级验证

class CuboidCreateSerializers(serializers.ModelSerializer):
    def validate_created_by(self, created_by): max_count = 10 created_count = Cuboid.objects.filter(created_by=self.context['request'].user).count() if created_count >= max_count: raise serializers.ValidationError("User allowed to create maximum of %s items" % max_count) return created_by

    class Meta:
        model = Cuboid
        fields = "__all__"

文档中有一节概述了这一点: https://www.django-rest-framework.org/api-guide/permissions/

IsAdminUser IsAdminUser 权限 class 将拒绝任何用户的权限,除非 user.is_staff 为 True,在这种情况下将允许权限。

基于此,我相信您必须检查两件事,isAuthenticated 和 user.is_staff 都必须为真。 可能 is_staff 已经说明了 isAuthenticated。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM