Creating subusers

154 views
Skip to first unread message

Jorge Andrés Vergara Ebratt

unread,
Jul 1, 2014, 10:21:25 PM7/1/14
to django...@googlegroups.com
Hello everyone,

I'm trying to create a system that has 3 different user types:

Independent Agent, that basically is what it sounds like, and Django's User Model works fine for this one.

But the catch comes from the other 2, because it also needs to support agencies and agencies have sub-users...

I'm trying to figure out the best way to do this, currently I'm trying with User profiles but don't really know if what I'm doing is correct, I'm doing this:


class IndependentAgent(models.Model):
    user = models.OneToOneField(User)
    tipo_licencia = models.CharField(max_lenght=140)


class AgencyUser(models.Model):
    user = models.OneToOneField(User)
    agency = models.ForeignKey(User, related_name='Agency')


Can I do this? Like that user profile for Agency User would let me 'asign' those users to their respective agencies so that later I can set my code that those users can only see that agency's information?

Or would making groups be better to handle this kind of situations?

Appreciate any help I can get, thanks in advance


--
Jorge Andres Vergara Ebratt
#SoftwareDeveloper (Or at least trying to be)
@javebratt

Mario Gudelj

unread,
Jul 2, 2014, 1:16:12 AM7/2/14
to django...@googlegroups.com
Hey Jorge,

I think you should extend the Abstract User instead of doing it the old way, which is creating that OneToOne relationship with a custom model. So, you'll end up with this:

class IndependentAgent(AbstractBaseUser, PermissionsMixin):
    tipo_licencia = models.CharField(max_lenght=140)

class AgencyUser(AbstractBaseUser, PermissionsMixin):
    agency = models.ForeignKey(User, related_name='Agency')

This way you'll inherit all those awesome methods like setting the password etc. and attributes, like is_admin, but you can also simply add your own and dealing with this is much easier, than having to get the profile etc.

Cheers,




--
You received this message because you are subscribed to the Google Groups "Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to django-users...@googlegroups.com.
To post to this group, send email to django...@googlegroups.com.
Visit this group at http://groups.google.com/group/django-users.
To view this discussion on the web visit https://groups.google.com/d/msgid/django-users/CAAeX05Gc6gnjdDi%3Dv%2B-n72mSi1JWdO1ecYUQORogvMifAw5o7w%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Lachlan Musicman

unread,
Jul 2, 2014, 1:16:25 AM7/2/14
to django...@googlegroups.com
I would recommend Intermediate Models as a good solution for these
type of weird situations

https://docs.djangoproject.com/en/dev/topics/db/models/#extra-fields-on-many-to-many-relationships

Cheers
L.

On 2 July 2014 12:20, Jorge Andrés Vergara Ebratt <jave...@gmail.com> wrote:
> --
> You received this message because you are subscribed to the Google Groups
> "Django users" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to django-users...@googlegroups.com.
> To post to this group, send email to django...@googlegroups.com.
> Visit this group at http://groups.google.com/group/django-users.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/django-users/CAAeX05Gc6gnjdDi%3Dv%2B-n72mSi1JWdO1ecYUQORogvMifAw5o7w%40mail.gmail.com.
> For more options, visit https://groups.google.com/d/optout.



--
The idea is that a beautiful image is frameable. Everything you need
to see is there: It’s everything you want, and it’s very pleasing
because there’s no extra information that you don’t get to see.
Everything’s in a nice package for you. But sublime art is
unframeable: It’s an image or idea that implies that there’s a bigger
image or idea that you can’t see: You’re only getting to look at a
fraction of it, and in that way it’s both beautiful and scary, because
it’s reminding you that there’s more that you don’t have access to.
It’s now sort of left the piece itself and it’s become your own
invention, so it’s personal as well as being scary as well as being
beautiful, which is what I really like about art like that.
-----------------------------------------------------------------------------------------------------------
Adventure Time http://theholenearthecenteroftheworld.com/

Mike Dewhirst

unread,
Jul 2, 2014, 3:00:06 AM7/2/14
to django...@googlegroups.com
On 2/07/2014 3:16 PM, Lachlan Musicman wrote:
> I would recommend Intermediate Models as a good solution for these
> type of weird situations
>
> https://docs.djangoproject.com/en/dev/topics/db/models/#extra-fields-on-many-to-many-relationships

+1

>
> Cheers
> L.

Jorge Andrés Vergara Ebratt

unread,
Jul 2, 2014, 5:53:32 AM7/2/14
to django...@googlegroups.com
Hey Lachlan, I read the docs you sent me and I have a question, what if (in that example from the docs that uses Person, Group and Membership) I needed the Group class to be an user too? Like the Group was an user that can create, update and delete every user in itself and also all the information those users wirte to the DB... Would it still be a good approach and create a 'superuser' member of the group that can have those permissions? Or should I try something else like groups or extending BaseUser?



For more options, visit https://groups.google.com/d/optout.



--

Lachlan Musicman

unread,
Jul 2, 2014, 7:35:47 AM7/2/14
to django...@googlegroups.com
Ah, ok, I see your problem is different - the Intermediate object
probably isn't your friend.

You can try the various levels of User, with various subclasses...

http://www.django-rest-framework.org/api-guide/permissions

Has some good ideas.

cheers
L.
> https://groups.google.com/d/msgid/django-users/CAAeX05Ew%2B%3DQ6CgLqtpVcwuvGs%3DQ7n0fNamthsSnT1MRxfrR0Aw%40mail.gmail.com.
Reply all
Reply to author
Forward
0 new messages