2011-04-04 4 views
3

J'utilise ManyToManyField de Django, et lorsque je tente d'y ajouter des données, je reçois l'erreur suivante:erreur Django ManyToManyField

Traceback (most recent call last): 
    File "<console>", line 1, in <module> 
    File "/home/purav/Desktop/socmov/fbcon/models.py", line 165, in getMovieInfo 
    movie.genre.add(G) 
    File "/usr/local/lib/python2.6/dist-packages/django/db/models/fields/related.py", line 503, in add 
    self._add_items(self.source_field_name, self.target_field_name, *objs) 
    File "/usr/local/lib/python2.6/dist-packages/django/db/models/fields/related.py", line 563, in _add_items 
    (obj, self.instance._state.db, obj._state.db)) 
ValueError: Cannot add "<Genre: Genre object>": instance is on database "None", value is on database "default" 

J'utilise Django 1.3, et je suit est une partie de mon code :

class Genre(models.Model): 
    gid = models.IntegerField(primary_key = True) 
    name = models.CharField(max_length = 20) 

class Movie(models.Model): 
    mid = models.IntegerField(primary_key = True) 
    name = models.CharField(max_length = 100) 
    genre = models.ManyToManyField("Genre") 

Ceci est où l'erreur se produit: on trouvera

G = Genre.objects.get(gid = obj[i]['id']) 
print G.name, G.gid 
movie.genre.add(G) 

Il est garanti que obj [i] [ 'id'] à l'intérieur Genre. Quelqu'un peut-il m'aider s'il vous plaît?

Répondre

9

Vous devez enregistrer l'instance de film après l'avoir créée, avant de pouvoir ajouter des relations m2m.

+0

merci, ça a marché –