On Tue, 2006-06-27 at 23:53 -0400, bsdlogical wrote:
> I've recently stumbled over a problem whose solution I can't find. I
> have a class with two fields that use the built-in User class (from
> django.contrib.auth.models) in a many-to-many relationship. However,
> when I try to access or modify those fields, django throws an error
> message. My class declaration is:
> 
> class Organization(models.Model):
>     name = models.CharField(maxlength=40)
>     sponsor = models.ManyToManyField(User,
> related_name='sponsored_orgs', null=True)
>     members = models.ManyToManyField(User,
> related_name='orgs_belonged_to', null=True)
>     test = models.ForeignKey(User)
> 
> The following code:
> o = Organization()
> o.sponsor
> 
> causes an error after the second line:
> Traceback (most recent call last):
>   File "<console>", line 1, in ?
>   File
> "/usr/local/lib/python2.4/site-packages/django/db/models/fields/related.py",
> line 405, in __get__
>     target_col_name=qn(self.field.m2m_reverse_name())
>   File
> "/usr/local/lib/python2.4/site-packages/django/db/models/fields/related.py",
> line 244, in __init__
>     raise ValueError("%r instance needs to have a primary key value
> before a many-to-many relationship can be used." % model)
> ValueError: <class 'django.contrib.auth.models.User'> instance needs to
> have a primary key value before a many-to-many relationship can be used.

When you create a many-to-many association, we store the pair of related
primary key values in the "join" table in the database. In order to
store that pair, both objects need to *have* a primary key. A new object
does not receive a primary key value until you save it (unless you
manually set the value yourself).

This will work:

        o = Organization()
        o.save()
        o.sponser
        
Regards,
Malcolm



--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/django-users
-~----------~----~----~----~------~----~------~--~---

Reply via email to