Je suis en train de commencer a bâtir un application et j'ai une question concernant la gestion des droits des utilisateurs dans la BO DJANGO.
J'ai une table voiture dans laquelle j'ai une clef externe vers users. Et ce que je souhaiterais c'est que un user (staff mais pas superuser) puisse ajouter des voitures ou modifier des voitures mais uniquement celles qui lui sont associées.
Est ce que cela est possible directement dans le BO fourni par DJANGO ?
from django.db import models
from django.contrib.auth.models import User
import datetime
from brand.models import Brands
from django.urls import reverse
# Create your models here.
class Car(models.Model):
dealer = models.ForeignKey(User, on_delete=models.DO_NOTHING)
brand = models.ForeignKey(Brands, on_delete=models.DO_NOTHING)
carname = models.CharField(max_length=100)
power = models.IntegerField()
fuel = models.IntegerField()
price = models.IntegerField()
description = models.TextField()
date = models.DateField()
def __str__(self):
return '%s %s' % (self.brand, self.carname)
Merci beaucoup !
- Edité par antoinedelcisco 12 mai 2021 à 17:43:47
Par niveau application, tu sous-entends qu'il faut créer une page de connexion qui redirige vers un BO "maison" dans lequel je filtre l'affichage par users ?
Par niveau application, tu sous-entends qu'il faut créer une page de connexion qui redirige vers un BO "maison" dans lequel je filtre l'affichage par users ?
C'est déjà fait automatiquement par Django... Un utilisateur connecté peut accéder aux voitures créés et associées à son username.
Pour ajouter une voiture, il faut déjà là créer et ensuite y donner son propriétaire. Donc ce que tu crées avec ton model Car me semble très bien pour faire ce que tu veux.
Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard) La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)
Malheureusement non j'ai un super user et un user "staff" et sur le user staff je peux voir toutes les voitures, meme celles associées au superuser, peut etre que j'ai raté un truc ?
Parce-que quand tu affiches l'ensemble des voitures, tu dois afficher en filtrant celle appartenant à l'user connecté.
cars = Car.objects.filter(dealer__username="...")
les ... sont à remplacer par le nom de la personne dont tu souhaites connaître ses voitures.
donc dans une view, ça donne quelque chose comme ça,
def cars_view(request):
user = request.user
cars = Car.objects.filter(dealer=user)
if cars.exists():
return render(...)
return render(...)
Il faudra sans doute mettre un décorateur pour bien vérifier que la condition pour accéder à cette vue sera d'être logué.
- Edité par fred1599 19 mai 2021 à 20:13:04
Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard) La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)
Django - Gestion des droits
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)
Celui qui trouve sans chercher est celui qui a longtemps cherché sans trouver.(Bachelard)
La connaissance s'acquiert par l'expérience, tout le reste n'est que de l'information.(Einstein)