首页 > 解决方案 > 如何知道所有指向模型的 django 反向查找

问题描述

我有一个模型 A 和几个模型(B、C 和 D),它们都有一个指向 A 的外部字段。我想实现一个方法来收集 B、C 和 D 中与每个记录相关的所有记录A、通过B、C、D中外键设置的反向查找。

问题是具有指向 A 的外键的模型的数量可以改变,所以我想让方法动态,所以我需要知道指向 A 的模型及其字段,以及它们的related_name.

有没有办法获取这些信息?

标签: pythondjangodjango-models

解决方案


您可以使用模型的 Meta 类来获取所有字段的列表并过滤它们以仅获取反向关系。

def get_reverse_lookup_fields(model: models.Model):
    return [
        field
        for field in model._meta.get_fields()
        if field.auto_created and not field.concrete
    ]

这里是你可以检查的字段属性,这里是 Meta API


推荐阅读