我想警告或阻止用户删除其他实例引用的对象实例.有一个很好的方法来做到这一点?
一种方法是获得包含指示物的模型列表,然后尝试对它们进行反向查找.有没有办法获得模型列表?或者,还有更好的方法?
在调查收集器建议时,我发现了一些相关信息,并编写了以下内容,查找具有指示对象作为外键的类:
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__
Run Code Online (Sandbox Code Playgroud)
根据建议使用收集中的代码:
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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1315 次 |
| 最近记录: |