Ich habe Probleme beim Überschreiben der Speichermethode in einem Django-Modell, um eine Einschränkung für ein Viele-zu-Viele-Feld zu überprüfen.Problem beim Überschreiben der Speichermethode beim Django-Modell mit ManyToManyField
Say I haben die folgenden Modelle:
class Person(models.Model):
name = models.CharField()
class ClothingItem(models.Model):
description = models.CharField()
owner = models.ForeignKey(Person)
class Outfit(models.Model):
name = models.CharField()
owner = models.ForeignKey(Person)
clothing_items = models.ManyToManyField(ClothingItem)
I eine Beschränkung der Methode der save
Outfit
setzen möchte, dass jede ClothingItem
in einer bestimmten Ausstattung stellt sicher, dass die gleiche Inhaber wie die Outfit
selbst hat.
I.e. Ich möchte schreiben:
class Outfit(models.Model):
name = models.CharField()
owner = models.ForeignKey(Person)
clothing_items = models.ManyToManyField(ClothingItem)
def save(self, *args, **kwargs):
for ci in self.clothing_items:
if ci.owner != self.owner:
raise ValueError('You can only put your own items in an outfit!)
super(Outfit, self).save(*args, **kwargs)
aber wenn ich versuche, dass ich einen Fehler über <Outfit: SundayBest>" needs to have a value for field "outfit" before this many-to-many relationship can be used.
Irgendwelche Ideen, was falsch ist hier los?