私が達成する必要があるのは、例で説明するのが最も良いです。私がモデルTask
とモデルAnimals
)のフィールドがfoo
という複数のモデルがあり、私の目標はこれらすべてのモデルに対して同じ一連のMySQLトランザクションを実行することです。たとえば、あるインスタンスのfoos
を1つ増やして、その後のインスタンス(大きなIDを持つインスタンス)と一緒に増やしたいとします。ような何か:すべてのタイプのDjangoモデル用ジェネリック関数を書く
def example_view(instance):
instance.foo = instance.foo + 1
instance.save()
id = instance.id
INSTANCE_MODEL.objects.filter(id__gt = instance.id).update(foo = foo + 1)
質問は、あるそれは限り、それらのすべてがビューに言及したフィールドを持っているように、私はAnimals
とexample_view
、Tasks
などを使用することができるという意味で、一般的な関数を記述するためにはDjangoで可能です?はいの場合、INSTANCE_MODEL.objects....
の有効な構文は何ですか?
:
であなたはあなたのビューでそれを呼び出すことができます-タイピング;オブジェクトがインタフェースに応答する限り、どのクラスであっても問題はありません。だからあなたの質問は何ですか? –
'INSTANCE_MODEL'の正しい構文は' type(instance) 'か' instance._meta.model'かもしれませんが、単に 'type()'を使うだけです。 –