0
這應該是一個非常簡單的問題,但我始終從DRF文檔中繪製空白。拒絕某些用戶的某些POST
models.py:
class DataPoint(models.Model):
value = models.IntegerField()
...
serializers.py:
class DataPointSerializer(serializers.ModelSerializer):
class Meta:
model = DataPoint
fields = ('value', ...)
views.py:
class DataPointViewSet(viewsets.ModelViewSet):
queryset = DataPoint.objects.all()
serializer_class = DataPointSerializer
permission_classes = [permissions.IsAuthenticated, ]
...
我希望每一個登錄的用戶能夠得到和發佈到此視圖集。唯一的限制是,非員工用戶需要保持低於100
值,像這樣:
if request.data['value'] > 100 and not request.user.is_staff:
raise PermissionDeniedValidationErrorWhatareyoudoing("Santaz gonna know")
我的問題歸結爲:
這是一個自定義的驗證或權限的工作嗎?
有權限的問題是DRF(特別是mixins.CreateModelMixin
)將高興地保存已發佈的數據而不檢查權限。只有稍後纔會查詢權限(當調用get_object()
時,AFAICS)。
驗證器存在的問題是,他們無法訪問request
,並且在那裏嘗試注入request
似乎是一種矯枉過正。
我錯過了什麼?
P.S.
同樣的限制也應該適用於PUT
和PATCH
。