获取所有相关的Django模型对象

如何获得所有具有ForeignKey指向对象的模型对象的列表?(类似于DELETE CASCADE之前Django管理员中的删除确认页面)。

我试图提出一种合并数据库中重复对象的通用方法。基本上,我希望所有具有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()源中的反向)

以上是 获取所有相关的Django模型对象 的全部内容, 来源链接: utcz.com/qa/411467.html

回到顶部