获取django中所有相关模型类

问题描述 投票:0回答:4

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

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
4个回答
4
投票

在上一个 Django 版本(1.8)中,选项对象有一个名为 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
投票

这适用于 Django 版本 3.2。您可以查看其他版本。

for t in A._meta._relation_tree:
    print(t.model)

1
投票

您可以使用

.model
来获取类名

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

也许这个问题/答案对您也有用。


0
投票

如果你想要所有相关的模型,包括A有外键的模型,以及A有外键的模型,你可以这样做:

[field.related_model for field in A._meta.get_fields(include_hidden=True) if hasattr(field, 'related_model') and field.related_model]
© www.soinside.com 2019 - 2024. All rights reserved.