Django REST çerçevesini nested router extension ile kullanıyorum. Rotalarımdan biri şu şekilde görünüyor: companies/$company/locations/$location
, $company
ve $location
, sümük değişkenleridir.Django REST Yuvalanmış Yollarda İzinler
Kullanıcıların yeni adres eklemek için bu URL'ye POST göndermesine izin vermek istiyorum: companies/$company/locations/
. POST yapan kullanıcının, POST yapmakta olduğu şirket için düzeltme izinlerine sahip olduğundan emin olmak istiyorum. Nesne düzeyindeki izinler için şu anda django-guardian
kullanıyorum. POST iletisi, yalnızca URL'den çıkarılabileceği gibi şirketin adını içermeyen yeni yerin adını içerir. Bu durumda izinleri doğru bir şekilde uygulamak için zor bir zaman geçiriyorum. Yeni Location
nesnesinin company
nesnesini viewset'in pre_save
yönteminden ayarlıyordum, ancak bu, izin denetiminin uygulanabilmesi için çok geç.
Bunu uygulamak için en iyi yol nedir? Orada durumda
kullanıcı POST şirket bulunuyor, ben viewset aşağıdaki ekleyerek şirketi doğrulayabilir:def get_queryset(self):
parent = super(LocationViewSet, self).get_queryset()
return parent.filter(company__slug=self.kwargs['company_slug'])
Bunun için bir çözüm buldunuz mu? – Gabriel
@alex Şirket sümüğünü nasıl pre_save yöntemine aldınız? Ben de gerçek soru – Neil
cevabını arıyorum Ben urls ve görünümleri ve serializer yayınlayabilir miyim? –