データベース内の他のすべてのオブジェクトに対してチェックを行うために、組み込みのdjango .save()
メソッドをオーバーライドしたいと思います。Django - 保存前に他のオブジェクトを確認する
For example:
class User(models.Model):
name = models.CharField(max_length=120)
class Admin(models.Model):
name = models.CharField(max_length=120)
class SecurityGroup(models.Model):
name = models.CharField(max_length=120)
users = models.ManytoManyField(User)
admins = models.ManytoManyField(Admin)
def save(self, *args, **kwargs):
# check admins don't exist in any other SecurityGroup prior to save
super(SecurityGroup, self).save(*args, **kwargs) # Call the "real" save() method.
documentation例は非常に単純で、事前保存チェックのこのタイプを説明していません。
私は、次のような.save()
にラインに追加しようとしている:他のSecurityGroupオブジェクトを呼び出すために
`self.objects.filter(admins__name=self.admins.name).count()`
が、私はエラーが表示されます。
`Manager is not accessible via SecurityGroup instance`
は、これが機能内部を節約達成することが可能ですこのタイプの事前セーブチェックにはを作成してSecurityGroup.save(commit=False)
を使用する必要がありますか?
ありがとうございました。
通話中にエラーが発生しています ' super'を 'SecurityGroup'に変更し、新しいインスタンスを保存する前に確認したい場合は、' self.pk'が存在するかどうか確認することができます。 –
ありがとう、私はエラーを修正しました。あなたはより完全な回答を提供していますか? – NickBraunagel
please、read full comments –