Code

Opened 6 years ago

Closed 6 years ago

#7026 closed (fixed)

Exception message is worded poorly (backwards)

Reported by: ryan@… Owned by: nobody
Component: Database layer (models, ORM) Version: master
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: UI/UX:

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.

Attachments (0)

Change History (2)

comment:1 Changed 6 years ago by programmerq

  • Component changed from Uncategorized to Database wrapper
  • Needs documentation unset
  • Needs tests unset
  • Patch needs improvement unset
  • Triage Stage changed from Unreviewed to Accepted

I also ran into this error: I was stumped because I knew that what it was saying was wrong.

comment:2 Changed 6 years ago by adrian

  • Resolution set to fixed
  • Status changed from new to closed

(In [7622]) Fixed #7026 -- Fixed misleading/incorrect exception text when adding to a many-to-many set on an object that doesn't yet have a primary-key value. Thanks for the report, ryan@…

Add Comment

Modify Ticket

Change Properties
<Author field>
Action
as closed
as The resolution will be set. Next status will be 'closed'
The resolution will be deleted. Next status will be 'new'
Author


E-mail address and user name can be saved in the Preferences.

 
Note: See TracTickets for help on using tickets.