2011-01-03 12 views
1

Ich möchte meine Foo Instanz überprüfen, ob es zu einer Kategorie meiner Kategorie gehört, ist ein viel zu viele Attribut so bekomme ich "'Foo' instance needs to have a primary key value before a many-to-many relationship can be used.", wenn ich so versuchen:Django Modell sauber und ManyToMany Problem

class Category(models.Model): 
    name = models.CharField(max_length=120) 

class Movie (models.Model): 
    poster = models.ImageField(blank=True) 
    categories = models.ManyToManyField(Category) 

    def clean(self): 
      try: 
       self.categories.all().get(db_name="special") 
       self.poster.url = u'/media/special_img.png' 
      except Category.DoesNotExist: 
       pass 
+0

könnten Sie bitte den Befehl hinzufügen, für den Sie diesen Fehler erhalten .. –

+0

@Tom - Ich wäre bereit zu wetten, es ist von 'self.categories.all()'. –

+0

@Dominic: Ich würde wetten, dass Sie diese Wette –

Antwort

2

Sie können‘ t Überprüfen Sie, ob Foo zu einer Kategorie gehört, bis Sie sie speichern. Da es jedoch nicht gespeichert wird, können Sie sicher sein, dass es noch nicht zu einer Kategorie gehört.

Eine Möglichkeit zu überprüfen, ob es bereits gespeichert wurde, ist if foo.pk. Die pk ist der Primärschlüssel und es wird None sein, wenn es noch nicht gespeichert wurde.