他のインスタンスが参照するオブジェクトインスタンスを削除することを警告または防止したいと思います。これを行うには良い方法がありますか?Django:どのモデルがモデルを参照しているのかを確認するには
1つの方法は、参照対象を含むモデルのリストを取得してから逆引き参照を試みることです。そのモデルのリストを取得する方法はありますか?それとも良い方法がありますか?
コレクタの提案を検討している間、私はいくつかの関連情報を見つけ、外部キーとして参照先を持つクラス見つかっ以下の書いた:コレクトでコードを使用するための提案に基づいて
def find_related(cl, app):
"""Find all classes which are related to the class cl (in app) by
having it as a foreign key."""
from django.db import models
all_models = models.get_models()
ci_model = models.get_model(app, cl)
for a_model in all_models:
for f in a_model._meta.fields:
if isinstance(f, ForeignKey) and (f.rel.to == ci_model):
print a_model.__name__
を:
をdef find_related(instance):
"""Find all objects which are related to instance."""
for related in instance._meta.get_all_related_objects():
acc_name = related.get_accessor_name()
referers = getattr(instance, acc_name).all()
if referers:
print related
この問題を最終的な解決策で更新していただきありがとうございます。優れた仕事。 – Spike
'find_related'は'(cl、app) 'を受け取り、' get_model'は '(app、cl)'を受け取ります。それは本当に混乱しています!また、誰かがこれを読んでいるなら、 'cl'と' app'は文字列です - オブジェクトを渡さないでください! – Casebash