如何获得所有具有ForeignKey指向对象的模型对象的列表?(有点像Django管理员中DELETE CASCADE之前的Delete确认页面)。
我试图提出一种合并数据库中重复对象的通用方法。基本上,我希望所有具有ForeignKeys指向对象“ B”的对象都被更新为指向对象“ A”,这样我就可以删除“ B”而不会丢失任何重要内容。
谢谢你的帮助!
这为您提供了所有相关对象的属性名称:
links = [rel.get_accessor_name() for rel in a._meta.get_all_related_objects()]
然后,您可以使用类似这样的方法来获取所有相关对象:
for link in links: objects = getattr(a, link).all() for object in objects: # do something with related object instance
我花了一段时间试图弄清楚这一点,以便可以在自己的模型中实现一种“观察者模式”。希望对您有所帮助。
使用_meta.get_fields():https : //docs.djangoproject.com/en/1.10/ref/models/meta/#django.db.models.options.Options.get_fields(另请参见_get_fields()源中的反向)
_meta.get_fields()
_get_fields()