Opened 18 years ago
Closed 17 years ago
#7026 closed (fixed)
Exception message is worded poorly (backwards)
| Reported by: | Owned by: | nobody | |
|---|---|---|---|
| Component: | Database layer (models, ORM) | Version: | dev | 
| Severity: | Keywords: | models many-to-many manytomany m2m exception primary key pk | |
| Cc: | Triage Stage: | Accepted | |
| Has patch: | no | Needs documentation: | no | 
| Needs tests: | no | Patch needs improvement: | no | 
| Easy pickings: | no | UI/UX: | no | 
Description
This occurs with recent SVN checkout.
(trimmed) example models:
class Tag(models.Model):
    name = models.CharField(max_length=127, unique=True)
class Image(models.Model):
    tags = models.ManyToManyField(Tag)
code which bombs:
t = Tag(name='foo') t.save() i = Image() i.tags.add(t) #Bombs here because i doesn't have a pk
Traceback
  File "reloadDB.py", line 73, in ?
    i.tags.add(t)
  File "/usr/lib/python2.4/site-packages/django/db/models/fields/related.py", line 485, in __get__
    target_col_name=qn(self.field.m2m_reverse_name())
  File "/usr/lib/python2.4/site-packages/django/db/models/fields/related.py", line 317, 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 'eTrain.models.Tag'> instance needs to have a primary key value before a many-to-many relationship can be used.
The error should indicate the <class 'eTrain.models.Image'> instance doesn't have pk...  I'm not sure how to get at this as superclass doesn't seem to have the model attribute set.
Change History (2)
comment:1 by , 17 years ago
| Component: | Uncategorized → Database wrapper | 
|---|---|
| Triage Stage: | Unreviewed → Accepted | 
comment:2 by , 17 years ago
| Resolution: | → fixed | 
|---|---|
| Status: | new → closed | 
  Note:
 See   TracTickets
 for help on using tickets.
    
I also ran into this error: I was stumped because I knew that what it was saying was wrong.