当前位置: 首页 > 面试题库 >

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

越福
2023-03-14
问题内容

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

我试图提出一种合并数据库中重复对象的通用方法。基本上,我希望所有具有ForeignKeys指向对象“ B”的对象都被更新为指向对象“ A”,这样我就可以删除“ B”而不会丢失任何重要内容。

谢谢你的帮助!


问题答案:

Django <= 1.7

这为你提供了所有相关对象的属性名称:

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

我花了一段时间试图弄清楚这一点,以便可以在我的一个模型中实现一种“观察者模式”。希望对你有所帮助。

Django 1.8以上

使用_meta.get_fields():https : //docs.djangoproject.com/en/1.10/ref/models/meta/#django.db.models.options.Options.get_fields(另请参见_get_fields()源中的反向)



 类似资料:
  • 有没有一种方法可以在Laravel中检索具有所有属性的模型,即使这些属性为空?它似乎只返回属性不为null的模型。 原因是我有一个函数,如果模型中存在属性,它将从数组中更新模型属性。在设置模型之前,我使用property_exists()函数检查模型是否具有特定属性。数组键和模型属性应该匹配,所以它就是这样工作的。 如果模型已经设置了属性,它可以正常工作,因为属性存在并从数组中获取值。但是,如果属

  • 问题内容: 给定Django模型,我试图列出其所有字段。我已经看到了使用_meta模型属性执行此操作的一些示例,但是meta前面的下划线是否表示_meta属性是私有属性,不应直接访问?…例如,因为_meta的布局将来可能会更改,并且不是稳定的API? _meta是该规则的例外吗?它是否稳定且可以使用,还是访问它的不正确做法?还是有一种功能或其他方法可以在不使用_meta属性的情况下自省模型的字段?

  • 本文向大家介绍Django 创建具有关系的模型,包括了Django 创建具有关系的模型的使用技巧和注意事项,需要的朋友参考一下 示例 多对一关系 最通用的选项。可以在您想要代表任何关系的任何地方使用 多对多关系 在内部,这是通过另一个表表示的。并ManyToManyField应放在将在表单上进行编辑的模型上。例如:Appointment将具有ManyToManyField被叫Customer,Pi

  • 我想从数据数组中获得所有名称。有没有什么方法可以不用迭代器来做呢?

  • 问题内容: 我定义了一个(最终)继承自的类。我想获取为此模型定义的所有字段的列表。例如,。基本上,我想检索从该类继承的任何内容。 我以为我可以利用来检索这些,但是它返回的列表不包含任何这些字段。看起来Django已经掌握了该类,并添加了其所有魔术属性并去除了实际定义的内容。那么…我如何获得这些领域?它们可能具有为自己的内部目的检索它们的功能? 问题答案: 由于大多数答案已过时,因此我将尝试在Dja

  • 我使用Neo4j(版本3.4.1)和Spring-data-neo4j(5.0.10)。RELEASE)在我的应用程序中。我也在使用OGM。 我的节点之间有以下关系: 车辆(V)具有部件(P1和P2)。零件可从经销商处购买(D1、D2和D3)。零件本身可以相互链接(例如P2与P1链接) 我正在尝试编写一个密码查询,以获取与id匹配的零件节点。我希望获取该节点及其相关节点和关系。 下面是我的查询: