【问题标题】:Get all related model class in django在 django 中获取所有相关的模型类
【发布时间】:2014-09-28 06:50:12
【问题描述】:

我正在尝试获取具有外键关系的所有相关模型类实例的列表,以便我可以执行类似model._meta.fields..的操作。

这是我目前所拥有的:

for related_object in A._meta.get_all_related_objects():
        related_name = related_object.field.rel.related_name

但我不确定如何获取相关模型类..

感谢您的帮助!

【问题讨论】:

    标签: python django django-models


    【解决方案1】:

    在上一个 Django 版本(1.8)中,options 对象有一个名为 related_objects 的属性;它将包含所有对外关系定义的迭代返回到模型中。可以检查每个这样的关系的属性:

    for relation in A._meta.related_objects:
        print(relation.related_model)    # model which has foreign keys to A
        print(relation.field.name)       # name of the foreign key field
    

    可迭代的related_objects 表示与A 模型的“反向”关系(ManyToOneRel、ManyToManyRel)。

    如果不明显,则由字段定义而不是模型定义驱动,这意味着相关模型将具有与其拥有的 A 模型的 ForeingKey 字段一样多的条目。

    【讨论】:

      【解决方案2】:

      可以使用.model获取类名

      for related_object in A._meta.get_all_related_objects():
          print related_object.model
      

      也许this question/answers 对您也有用。

      【讨论】:

      • 问题是关于“获取所有相关模型类”。此解决方案返回实例。想象一下桌子是空的。这不会返回任何实例。但是相关的类是存在的。
      • 以前的评论令人困惑。这会返回一个类,但它会返回错误的类,因为 model 将返回当前类,而 related_model 返回所要求的内容(显然是相关模型)。
      猜你喜欢
      • 1970-01-01
      • 2011-01-15
      • 2013-12-22
      • 2014-11-02
      • 2017-08-06
      • 2013-02-17
      • 1970-01-01
      • 1970-01-01
      • 2012-05-07
      相关资源
      最近更新 更多