Django Rest Framework:驗證 HiddenField CurrentUserDefault 屬性

貢薩隆

我正在使用 DRF 在單頁應用程序中創建 API。我有一個客戶用戶類,我只添加了一個is_manager標誌和一個managerEntity模型,其中is_manager標誌為 True 的用戶可以創建 managerEntities 成為它們的所有者。問題是我似乎無法弄清楚如何在創建方法之前驗證來自序列化程序的數據以檢查是否設置is_manager如果設置,則應該創建managerEntity,否則,引發異常。

class DeepmetricsUser(AbstractUser):
    is_manager = models.BooleanField(default=False)

class managerEntity(models.Model):
    id              = models.AutoField(primary_key=True)
    name            = models.CharField(max_length=200)
    owner           = models.ForeignKey(get_user_model(), on_delete=models.CASCADE)
    team            = models.ManyToManyField(get_user_model(), blank=True)

視圖.py

class managersEntityViewSet(viewsets.ModelViewSet):

    queryset = managerEntity.objects.all()
    serializer_class = managerEntityModelSerializer
    permission_classes = [permissions.IsAuthenticated]

    def get_queryset(self):
        return self.queryset.filter(Q(owner = self.request.user) | Q(team=self.request.user.id))


    def create(self, request, *args, **kwargs):
        serializer = managerEntitySerializer(data=request.data, context={"request": self.request})
        serializer.is_valid(raise_exception=True)
        res = serializer.save()
        data = managerEntityModelSerializer(res).data
        return Response(data, status=status.HTTP_201_CREATED)

序列化程序.py

class managerEntitySerializer(serializers.Serializer):
    name    = serializers.CharField(max_length=255)
    owner   = serializers.HiddenField(default=serializers.CurrentUserDefault())
        
    def create(self, data):
        res = managerEntity.objects.create(**data)
        return res
沙基爾·阿弗里迪

您需要覆蓋validateSerializer 中方法

def validate(self, attrs):
   if not self.context["request"].user.is_manager:
      serializers.ValidationError("Validation error")
   return attrs

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Django REST Framework-CurrentUserDefault使用

带有序列化程序的Django REST Framework CurrentUserDefault()

Django REST Framework BasicAuthentication 未作為默認身份驗證類應用

JWT 身份驗證使用 SimpleJWT 在 Django Rest Framework 中返回 AnonymousUser

一旦在 Django 中驗證表單,如何更新模型的一個屬性?

通過 Django Rest Framework 中的屬性或自定義字段對模型進行排序

帶有 Django Rest Framework 的 Python 請求 - “詳細信息”:“未提供身份驗證憑據”

Django Rest 框架中的“已查看”屬性

Automapper:忽略目標屬性的驗證異常

如何驗證是否需要對象屬性?

Django rest 框架:創建用戶請求身份驗證

如何驗證屬性是否屬於某個用戶

使用 puppeteer 驗證輸入字段的只讀屬性

Angular 上的間接條件所需驗證(嵌套屬性)

您可以根據枚舉屬性值執行包含驗證嗎?

Symfony 中所有字符串類型屬性的通用實體驗證

我們可以驗證不完整的 DTO 屬性嗎?

REST嚴格驗證與否?

间歇性故障:Django Rest Framework身份验证

如何使用 Django 身份驗證

Django Rest Framework的ModuleNotFoundError

django-rest-framework 中 django 外键字段的完整性错误

使用 PKCE 的 Azure DevOps REST API 身份驗證

Django Rest Framework文件上传

Python Django Rest Framework UnorderedObjectListWarning

Django Rest Framework部分更新

Django Rest Framework令牌认证

Django REST Framework图片上传

Django Rest Framework和JSONField