In Django, the standard way to add additional information to be associated with a user is to use a user profile. To do this, I have an app called, "accounts"
accounts __init__.py models.py admin.py (we'll ignore this for now, it works fine) <br> management __init__.py commands __init__.py generate_user.py in settings.py we have AUTH_PROFILE_MODULE = 'accounts.UserProfile' in models.py we have from django.db import models from django.contrib.auth.models import User # Create your models here. class UserProfile(models.Model): user = models.ForeignKey(User, unique=True) age=models.IntegerField() extra_info=models.CharField(max_length=100,blank=True) User.profile = property(lambda u: UserProfile.objects.get_or_create(user=u)[0]) The last line makes use of python decorators to either get a user profile object if it already exists, or to return an existing one. This code is taken from: http://www.turnkeylinux.org/blog/django-profile#comment-7262 Next, we need to try to make our simple command. So in gen_user.py from django.core.manaement.base import NoArgsCommand from django.db import models from django.contrib.auth.models import User from accounts.models import UserProfile import django.db.utils class Command(NoArgsCommand): help='generate test user' def handle_noargs(self, **options): first_name='bob'; last_name='smith' username='bob' ; email='b...@bob.com' password='apple' #create or find a user try: user=User.objects.create_user(username=username,email=email,password=password) except django.db.utils.IntegrityError: print 'user exists' user=User.objects.get(username=username) user.firstname=first_name user.lastname=last_name user.save() #make sure we have the user before we fiddle around with his name #up to here, things work. user.profile.age=34 user.save() #test_user=User.objects.get(username=username) #print 'test', test_user.profile.age #test_user.profile.age=23 #test_user.save() #test_user2=User.objects.get(username=username) #print 'test2', test_user2.profile.age to run, from your project directory, type python manage.py gen_user The question is, why doesn't the age update? I suspect that this is a case of me catching an instance instead of the real object, bet everything that I've tried from using user.userprofile_set.create to using setattr, etc. has failed and I'm running out of ideas. Is there a better pattern? Ideally, I would like to just be able feed in a dict to update the userprofile, but for now, I can't see how to even update a single parameter. Also, even when I have been able to create a user with one parameter (the age, which is required), I have not been able to later update the additional parameter. I can't remove or delete the old userprofile and blast in a new one because of the foreignkey relation. Ideas? Thanks!!!! -- You received this message because you are subscribed to the Google Groups "Django users" group. To post to this group, send email to django-users@googlegroups.com. To unsubscribe from this group, send email to django-users+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/django-users?hl=en.