Django newbie issue. Just trying to understand. I'm setting up a
simple UserProfile class to link to User (as described in several
places in documentation). Here's what I have --- a simple example of
storing the user's website in a profile

#In myapp/models.py
class UserProfile(models.Model):
    def __init__(self, website='http://www.default.com'):
        super(UserProfile, self).__init__()
        self.website = website
    user = models.ForeignKey(User, unique=True,
related_name="user_profile") <-- note related_name...see below
    website = models.URLField()

#In myproject/settings.py
AUTH_PROFILE_MODULE = "myapp.UserProfile"

Now I create a empty db
run: python2.6 manage.py syncdb
All tables look good in postgres.

Now in the python shell:

Python 2.6.5 (r265:79063, May 12 2010, 10:28:19)
>>> from django.contrib.auth.models import User
>>> from myapp.models import UserProfile
>>> u = User(username='testuser', password='shhhh')
>>> u.save()
>>> up = UserProfile(website='www.overridethesite.com')
>>> up.user=u
>>> up.save()

So far so good
Over in Postgres, everything looks fine:
mydb=> select au.id as id, au.username, up.id as upid, up.user_id as
fk_userid, up.website from auth_user au join myapp_userprofile up on
(au.id=up.user_id);
   id | username | upid | fk_userid |         website
------+----------+------+-----------+-------------------------
    2 | testuser |    1 |         2 | www.overridethesite.com
(1 row)

Now back in the python shell, trying to use the profile from the user
obj:

>>> u.user_profile.values()  <--- works fine using the related_name I set in 
>>> the UserProfile class
[{'website': u'www.overridethesite.com', 'user_id': 2, 'id': 1}]

### But get_profile() fails:

>>> myprofile = u.get_profile()
Traceback (most recent call last):
  File "<console>", line 1, in <module>
  File "/home/myusername/webapps/django_boosters/lib/python2.6/django/
contrib/auth/models.py", line 370, in get_profile
    self._profile_cache =
model._default_manager.using(self._state.db).get(user__id__exact=self.id)
  File "/home/myusername/webapps/django_boosters/lib/python2.6/django/
db/models/query.py", line 336, in get
    num = len(clone)
  File "/home/myusername/webapps/django_boosters/lib/python2.6/django/
db/models/query.py", line 81, in __len__
    self._result_cache = list(self.iterator())
  File "/home/myusername/webapps/django_boosters/lib/python2.6/django/
db/models/query.py", line 282, in iterator
    obj = self.model(*row[index_start:aggregate_start])
TypeError: __init__() takes at most 2 arguments (4 given)

Can anyone tell me what's going on, or what I'm doing wrong? Thanks in
advance.

-- 
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