我正在尝试获取具有外键关系的所有相关模型类实例的列表,以便我可以执行类似
model._meta.fields
..的操作
这是我到目前为止所拥有的:
for related_object in A._meta.get_all_related_objects():
related_name = related_object.field.rel.related_name
但我不知道如何获取相关模型类..
感谢您的帮助!
在上一个 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 字段一样多的条目。
这适用于 Django 版本 3.2。您可以查看其他版本。
for t in A._meta._relation_tree:
print(t.model)
您可以使用
.model
来获取类名
for related_object in A._meta.get_all_related_objects():
print related_object.model
也许这个问题/答案对您也有用。
如果你想要所有相关的模型,包括A有外键的模型,以及A有外键的模型,你可以这样做:
[field.related_model for field in A._meta.get_fields(include_hidden=True) if hasattr(field, 'related_model') and field.related_model]