2010-02-18 17 views
0

Je suis en train de développer un SAAS et d'avoir le plus de mal à comprendre pourquoi j'ai besoin d'utiliser «User» pour autre chose que moi-même. Je ne sais pas pourquoi mais ça me fait bizarre de penser que moi, en tant que développeur/administrateur de l'ensemble du logiciel, avec un accès complet à Django Admin (comme l'Eye of Sauron), j'ai le même type d'objet Utilisateur qu'un compte "UserProfile" du titulaire a. S'il vous plaît, aidez-moi à comprendre pourquoi cela est nécessaire.Django: En utilisant un système AUTH personnalisé, pourquoi le modèle User est-il toujours nécessaire?

Exemple:

class Account(models.Model): # represents copporate customer 
    admin = models.ForeignKey(User) 
    # other fields ... 

class UserProfile(models.Model): 
    user = models.ForeignKey(User) 
    account = models.ForeignKey(Account) 

On se sent comme si je le mêle fonctionnalité Admin builtin avec la fonctionnalité utilisateurs de mes titulaires de comptes. Est-ce juste pour réutiliser des éléments comme request.user, etc.?

Répondre

1

Eh bien, la réutilisation du code et de la fonctionnalité pourrait être un effet secondaire heureux, mais fondamentalement, je ne pense pas que ce soit cassé.

Un utilisateur représente une personne utilisant votre site Web. Au niveau de la base, peu importe qui est cette personne ou quelles sont les caractéristiques ou fonctionnalités dont elle a besoin - simplement qu'elle fait des demandes et peut être identifiée d'une manière ou d'une autre.

D'autres fonctionnalités peuvent être ajoutées dans différentes couches, soit par le biais de composants intégrés tels que Groupes ou Autorisations, soit par l'intermédiaire d'autres éléments que vous construisez vous-même, comme vous le faites dans votre exemple.

+0

@Andy Hume Qu'en est-il de tous les attributs: nom d'utilisateur, prénom, nom de famille, adresse électronique, mot de passe, is_staff, is_active, is_superuser, etc. Dois-je utiliser tous ces éléments lorsque je crée un utilisateur? Je suppose que j'ai juste du mal à comprendre comment tous ces attributs pourraient s'intégrer dans mon propre système. Est-ce que je devrais utiliser tous ces attributs? Si is_superuser = True cela ne leur donne-t-il pas une passe d'accès complète s'ils tapent simplement www.example.com/admin/? J'ai regardé Django-Annoying et il a un AutoOneToOneField() qui crée l'utilisateur pour vous, mais qu'en est-il de la définition de tous les attributs? – orokusaki

+0

Vous n'avez certainement pas besoin d'utiliser tous les attributs. Vous pouvez exposer aussi peu ou autant de sens selon ce que vous voulez qu'un type spécifique d'utilisateur puisse faire. Oui, is_superuser = True doit être réservé uniquement à vous-même et aux personnes très privilégiées qui en ont besoin. Un utilisateur 'normal' le mettrait à False. Vous pouvez définir tous les attributs si OneToOneField si vous en avez besoin, par exemple. profile.user.last_name = "Jones" –