假设我有一个包含相关(外键)字段的模型。同样,这些外键字段可能引用可能包含或可能不包含相关字段的模型。请注意,Django 中的关系字段可能是一对一、多对一或多对多。
现在,给定一个模型的实例,我想递归地和动态地获取与其相关的模型的所有实例,无论是直接还是间接。从概念上讲,我想遍历相关对象并返回它们。
例子:
class Model1{
rfield1 = models.ForeignKey("Model2")
rfield2 = models.ManyToManyField("Model3")
normalfield1 = models.Charfield(max_length=50)
}
class Model2{
sfield = models.ForeignKey("Model3")
normalfield = models.CharField(max_length=50)
}
class Model3{
normalfield = models.CharField(max_length=50)
}
比方说,我有一个 model 实例Model1 model1
,我想获取与它直接相关的对象,即所有 Model2 和 Model3 对象,以及间接相关的对象,即与之前检索到的 Model2 对象相关的所有 Model3 对象。我还想考虑在OTHER MODEL上定义相关字段的一对一字段的情况。
另外,请注意,我可能不知道我当前正在处理的实例的模型。假设在前面的例子中,我现在可能不是模型model1
的一个实例Model1
。所以我想动态地执行所有这些。
为此,我认为我需要一种方法来获取对象的所有相关字段。
- 如何获取对象的所有相关字段?
- 我应该如何使用它们来获取实际的相关对象?
或者有没有办法更好地做到这一点?非常感谢!
更新:
我已经知道如何执行 1,而 2 基本上直接来自 1。:) 稍后更新。