Generally, try to build your application so that it doesn't blindly
depend on the profile existing. The signal example Tom showed you is
good as it means you won't have to check if the UserProfile instance
exists for the user on every turn. However, don't depend on the data
within. Keep it light and separate.
Why does the admin need the stuff you can put in UserProfile if you
create him via the admin pages?
If he really needs it, tell him to register and then you go in an turn
his created account (in the admin) to a superuser or whatever you
need.

On 25 Mar, 18:37, Jim N <jim.nach...@gmail.com> wrote:
> On Mar 11, 1:03 pm, Tom Evans <tevans...@googlemail.com> wrote:
>
> > On Thu, Mar 11, 2010 at 4:54 PM, russianbandit <russianban...@gmail.com> 
> > wrote:
> > > I'm using UserProfile to add one field to my users. However, I know
> > > that I must explicitly create UserProfile for each new user that
> > > registers. So, I make a UserProfile upon registration. Is UserProfile
> > > still the best way to extend the user model?
> > > What about the admin user, or users that the admin creates? Since they
> > > don't go through the registration process, how do I ensure that their
> > > UserProfile gets created?
>
> > Add this to your models.py
>
> > from django.db.models.signals import post_save
> > from django.contrib.auth.models import User
>
> > def _hook_save_user(instance, sender, **kwargs):
> >   try:
> >     instance.get_profile()
> >   except UserProfile.DoesNotExist:
> >     UserProfile.objects.get_or_create(user=instance)
>
> > post_save.connect(_hook_save_user, sender=User)
>
> On Mar 11, 1:03 pm, Tom Evans <tevans...@googlemail.com> wrote:
>
>
>
> > On Thu, Mar 11, 2010 at 4:54 PM, russianbandit <russianban...@gmail.com> 
> > wrote:
> > > I'm using UserProfile to add one field to my users. However, I know
> > > that I must explicitly create UserProfile for each new user that
> > > registers. So, I make a UserProfile upon registration. Is UserProfile
> > > still the best way to extend the user model?
> > > What about the admin user, or users that the admin creates? Since they
> > > don't go through the registration process, how do I ensure that their
> > > UserProfile gets created?
>
> > Add this to your models.py
>
> > from django.db.models.signals import post_save
> > from django.contrib.auth.models import User
>
> > def _hook_save_user(instance, sender, **kwargs):
> >   try:
> >     instance.get_profile()
> >   except UserProfile.DoesNotExist:
> >     UserProfile.objects.get_or_create(user=instance)
>
> > post_save.connect(_hook_save_user, sender=User)
>
> Very interesting, Tom.
>
> I have inserted this code, substituting my profile model name
> (QotdUser) for UserProfile.  It does create a row in QotdUser, but the
> row is empty of course.
>
> More importantly, if I create a user via the admin interface (http://
> 127.0.0.1:8000/admin/auth/user/add/) there's no apparent way to edit
> any of the fields of my profile model.
>
> Or if I create the user some other way, would I be able to pass
> arguments to the User model to populate the profile?
>
> Finally, how do I access the profile, is it like
>
>   my_user_profile = User.objects.get(username="jim").get_profile() ?
>
> Thanks for the help.
>
> -Jim

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To post to this group, send email to django-us...@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.

Reply via email to