J'ai 3 modèles comme ci-dessous :
class CustomUser(AbstractUser):
pass
class PropertyPost(models.Model):
owner = models.ForeignKey(
get_user_model(),
related_name='posts4thisowner',
on_delete=models.CASCADE)
class Image(models.Model):
prop_post = models.ForeignKey(
PropertyPost,
related_name='images4thisproperty',
on_delete=models.CASCADE)
L'idée ici est que l'utilisateur peut afficher plusieurs PropertyPost et que chaque PropertyPost peut contenir plusieurs images.
Les choses fonctionnent bien. Mon problème se situe au niveau des autorisations. J'ai défini un ensemble de permissions comme suit pour mes vues PropertyPostDetail, et aucune permission pour la vue ImageDetail :
class PropertyPostDetail(generics.RetrieveUpdateDestroyAPIView):
...
permission_classes = (
permissions.IsAuthenticatedOrReadOnly,
custompermission.IsCurrentUserOwnerOrReadOnly,
)
class ImageList(generics.ListCreateAPIView):
queryset = Image.objects.all()
serializer_class = ImageSerializer
name = 'image-list'
class ImageDetail(generics.RetrieveUpdateDestroyAPIView):
queryset = Image.objects.all()
serializer_class = ImageSerializer
name = 'image-detail'
ce qui signifie que seul le propriétaire de l'article peut modifier ses articles.
Étant donné que le modèle d'image concerne le PropertyPost, je m'attendais à ce que cette autorisation s'applique également aux images. Cependant, il semble que n'importe quel utilisateur puisse modifier n'importe quelle image, ce qui est évidemment un défaut. Ma question est la suivante : comment puis-je configurer ma vue image pour qu'elle hérite des permissions de son parent, le PropertyPost ?