python - 如何知道所有指向模型的 django 反向查找
问题描述
我有一个模型 A 和几个模型(B、C 和 D),它们都有一个指向 A 的外部字段。我想实现一个方法来收集 B、C 和 D 中与每个记录相关的所有记录A、通过B、C、D中外键设置的反向查找。
问题是具有指向 A 的外键的模型的数量可以改变,所以我想让方法动态,所以我需要知道指向 A 的模型及其字段,以及它们的related_name
.
有没有办法获取这些信息?
解决方案
您可以使用模型的 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
推荐阅读
- optimization - 具有快速最小、删除、插入、搜索大型计算作业的数据结构
- python - 关闭 Binance 保证金订单是否必须使用 sideEffectType="AUTO_REPAY"?
- c# - Azure 认知服务 - 文本转语音 - SpeakTextAsync 不返回
- crystal-reports - Crystal Report 导出到 Excel - 页眉宽度不一致
- python - 在循环中使用子进程调用 Python 命令
- autossh - autossh 在直接从 shell 启动时工作,但不在服务中
- vb.net - 为什么在 for 循环中更改文本时 printdocument 会打印相同的页面?
- jena - 使用 Apache Jena(在 Java 中)读取 Turtle 文件时出现问题
- github - 团队的 Github GraphQL 列表 repo 权限
- django - 如何刷新 nuxt.js 中的 JWT 令牌?