I'm using Django 1.5 and I needed an api to control the addition of users
and the management of users on those groups. Django's rest framework proved
a good starting point but I hit issues with the ManyToMany relation groups
which means that there is no model for the user_group which in turn
complicated the API. I worked around this fairly easily with the following
code:
from django.db import models
from django.contrib.auth.models import User, UserManager, Group
class UserGroup(models.Model):
user = models.ForeignKey(User)
group = models.ForeignKey(Group)
class Meta:
# auth_user_groups is created by the ManyToMany relation field
# in the contrib.auth.models User model
managed = False
db_table = 'auth_user_groups'
# Add an easy way to get at this from the User objects
def get_user_groups(self):
return UserGroup.objects.filter(user=self)
User.add_to_class('get_user_groups', get_user_groups)
This handles the problem by allowing the API to have convenient usergroup
urls and endpoints but I don't like using 'add_to_class'. I really just
want a specialized user class but I could not get the following to work:
class APIUser(User):
objects = UserManager()
class Meta:
managed = False
db_table = 'auth_user'
def get_user_groups(self):
return UserGroup.objects.filter(user=self)
Sadly, it fails with, for example, "Unknown column 'auth_user.user_ptr_id'
in 'where clause'" if I try to save a newly created APIUser.
Am I barking up the wrong tree or just missing something obvious?
--
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 [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/django-users.
For more options, visit https://groups.google.com/groups/opt_out.