Djangoモデルのsaveメソッドをオーバーライドして、多対多フィールドの制限をチェックする際に問題があります。ManyToManyFieldでDjangoモデルのsaveメソッドをオーバーライドするときの問題
は、私は次のモデルがあるとしましょう:
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)
私は与えられた服の各ClothingItem
がOutfit
自体と同じ所有者を持っていることを保証Outfit
のsave
方法に制限をつけたいと思います。
I.e.
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)
が、私はここで間違って何が起こっているのか<Outfit: SundayBest>" needs to have a value for field "outfit" before this many-to-many relationship can be used.
任意のアイデアについてのエラーが出ることをしようとすると:私が書きたいのですが?