Używam frameworka Django REST z nested router extension. Jedna z moich tras wygląda następująco: companies/$company/locations/$location
gdzie $company
i $location
są zmiennymi slug.Uprawnienia REST dla Django na zagnieżdżonych trasach
Chcę zezwolić użytkownikom na POST na ten URL: companies/$company/locations/
, aby dodać nowe lokalizacje. Chcę się upewnić, że użytkownik wykonujący test POST ma uprawnienia do korekty dla firmy, do której PODLEGA. Obecnie używam django-guardian
dla moich uprawnień na poziomie obiektu. Wiadomość POST zawiera tylko nazwę nowej lokalizacji, w której nie ma nazwy firmy, ponieważ można ją wywnioskować z adresu URL. Mam trudności z prawidłowym egzekwowaniem uprawnień w tym przypadku. Ustawiłem pole company
nowego obiektu Location
z metody pre_save
, ale jest już za późno na zastosowanie sprawdzenia uprawnień.
Jaki jest najlepszy sposób na egzekwowanie tego?
tam przypadku użytkownik robi to towarzystwo w poście, mogę potwierdzić firmę poprzez dodanie następujących do viewset:
def get_queryset(self):
parent = super(LocationViewSet, self).get_queryset()
return parent.filter(company__slug=self.kwargs['company_slug'])
Czy kiedykolwiek znalazłeś rozwiązanie tego problemu? – Gabriel
@alex, skąd wzięła się spółka w metodzie pre_save? Szukam również odpowiedzi na Twoje aktualne pytanie – Neil
Czy możesz opublikować adresy URL i widoki oraz serializer? –