0

インスタンスを M2M リレーションに追加するときの動作を変更して、おそらく上書きして、次のようなことができるようにしたいと思います。

try:
    my_instance.one_field_set.add( another_instance )
except ValidationError:
    # do something

それは可能ですか?

4

2 に答える 2

1

はい、しかしそのようにしないでください。

intermediate1) M2M 関係に明示的なモデルを使用しmanager、メソッドを置き換えることができるカスタムを提供できますcreate

2) ただし、私の意見では、これらのモデルの 1 つにadd_something、必要な検証と例外処理ロジックを提供するインスタンス メソッドを用意するのが最善の方法です。

于 2012-05-17T23:16:05.280 に答える
0

同様の質問が見つかりました。これはまさに私が望んでいたものではありませんが、回避策として役立ちます。

@receiver(m2m_changed, sender=MyModel.my_field.through)
def check(sender, **kwargs):
    if kwargs['action'] == 'pre_add':
        add = AnotherModel.objects.filter(pk__in=kwargs["pk_set"]) # instances being added
        # your validation here...

mamachanko さん質問に感謝します。

于 2012-05-18T15:41:12.793 に答える