Ich habe einen UserUpdateAPIView
, darin ich die Benutzerinformationen bearbeiten:Wie kann ich den Superadmin Benutzer und Benutzer selbst auf eine API zugreifen lassen?
class UserUpdateAPIView(RetrieveUpdateAPIView):
queryset = User.objects.filter(is_admin=False, is_staff=False, is_superuser=False).exclude(status=4)
serializer_class = UserDetailSerializer
lookup_field = "username"
def perform_update(self, serializer):
serializer.save()
Die UserDetailSerializer
:
class UserDetailSerializer(ModelSerializer):
"""
user detail
"""
class Meta:
model = User
exclude = [
'password',
]
depth = 1
Jetzt kann jeder Benutzer die UserUpdateAPIView
zugreifen, so dass ihr ein schlechtes Design. Ich will nur den Super Admin und der Benutzer selbst kann auf die APIView zugreifen, wie man es implementiert?
Ich weiß, ich kann permissions = [IsAdminUser]
verwenden, um den Admin-Benutzern den Zugriff auf diese API zu ermöglichen, aber ich möchte nur den Super-Admin-Benutzer und den Benutzer selbst zugreifen lassen.
was ist das 'obj' dort? meinst du, es ist der angemeldete Benutzer? oder meinst du das obj sind die daten (benutzerdaten)? – fanhualuojin154873
Obj das Objekt, das Sie abrufen, es ist Rückgabe von 'get_object' Methode.Hier Sie abgerufen wird Benutzer Instanz.Es kann jede Modellinstanz sein, abhängig von der Molde, die Sie in Ansichten abrufen. – Ykh
Ich benutze 'django-1.11.5', wie man das is_authenticated importiert? – fanhualuojin154873