あなたは、モデルのsave()
メソッドオーバーライドすることができます。
class TestToExample(models.Model):
example1 = models.ForeignKey(Test,related_name='example1')
example2 = models.ForeignKey(Test,related_name='example2')
def save(self, force_insert=False, force_update=False,
using=None, update_fields=None):
assert self.example1 != self.example2
# Or:
# if self.example1 == self.example2:
# raise WhateverError
super(TestToExample, self).save(
force_insert=force_insert, force_update=force_update, using=using,
update_fields=update_fields)
これは、一般的に、これまで(bulk_create()
経由でインスタンスを作成するための例外を除いて)、無効なモデル状態を持っているあなたを禁止します。
class TestToExample(models.Model):
...
def clean(self):
if self.example1 == self.example2:
raise ValidationError('example1 and example2 must be different')
super(TestToExample, self).clean()
:あなたが管理者を介して、またはモデルフォームを通じてインスタンスを保存する場合は、代わりに内部サーバエラーの適切なエラーメッセージを提供するために、(を参照)モデルの
clean()
メソッドをオーバーライドして、そこ
ValidationError
を上げたほうが良いかもしれません
おかげでそれは働いた:) –