Ich habe zwei Benutzer in meiner app, so habe ich eine benutzerdefinierte gebaut von AbstractBaseUser
wie diese Subklassen,Mehrere Benutzer in django
class MyUser(AbstractBaseUser, PermissionsMixin):
email = models.EmailField(
verbose_name='email address',
max_length=255,
unique=True,
)
name = models.CharField(max_length=200, null=True)
is_active = models.BooleanField(default=True)
is_admin = models.BooleanField(default=False)
objects = MyUserManager()
#other methods required here
und meine Benutzer:
class User1(MyUser):
mobile_no = models.CharField(max_length=10, blank=True, null=True, validators=[validators.MinLengthValidator(10),
validators.MaxLengthValidator(10)])
profile_pic = models.ImageField(upload_to=Rename('user1_profiles'), null=True, blank=True)
about = models.TextField(null=True, blank=True)
other_details = models.TextField(null=True, blank=True)
class User2(MyUser):
mobile_no = models.CharField(max_length=10,blank=True, null=True, validators=[validators.MinLengthValidator(10),
validators.MaxLengthValidator(10)], unique=True)
avatar = models.ImageField(upload_to=Rename('profiles'), null=True, blank=True,)
Dies funktioniert gut, aber Wenn ich versuche, Benutzer mit request.user
zu bekommen bekomme ich MyUser
Instanz. In einigen APIs möchte ich das in anderen APIs User1
und User2
sein. Um diese Arbeit ich das in jedem API bin mit:
user = User1.objects.get(id=request.user.id)
oder
user = User2.objects.get(id=request.user.id)
Gibt es eine elegantere Möglichkeit, dies zu tun? Wie kann ich verhindern, dass Nutzer vom Typ "User1" auf APIs zugreifen, die für Benutzer "User2" erstellt wurden?
Gibt es eine bessere Lösung als einen Decorator in jeder Ansicht zu verwenden, um Zugriff auf den richtigen Benutzertyp zu erhalten? – dnit13
Sie können die Erlaubnis Mixin verwenden, obwohl es keinen großen Unterschied machen wird. – RA123