【发布时间】:2013-01-23 08:36:12
【问题描述】:
假设我有一个包含相关(外键)字段的模型。同样,这些外键字段可能引用可能包含或可能不包含相关字段的模型。请注意,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)
}
假设我有一个模型Model1 model1 的实例,我想获取与其直接相关的对象,即所有 Model2 和 Model3 对象,以及间接相关的对象,即与检索到的 Model2 对象相关的所有 Model3 对象之前。我还想考虑在 OTHER MODEL 上定义相关字段的一对一字段的情况。
另外,请注意,我可能不知道我当前正在处理的实例的模型。假设在前面的示例中,我现在可能不是 model1 是 Model1 模型的实例。所以我想动态地执行所有这些。
为此,我认为我需要一种方法来获取对象的所有相关字段。
- 如何获取一个对象的所有相关字段?
- 我应该如何使用它们来获取实际的相关对象?
或者有没有办法更好地做到这一点?非常感谢你!
更新:
我已经知道如何执行1,而2基本上直接从1。:)稍后更新。
【问题讨论】:
-
(1)你为什么要这样做和(2)你有没有看过generic relationships in Django;如果是这样,为什么这还不够?
-
(1) 我想对这些对象执行一些操作。 #2 我还不明白泛型关系与我的问题的相关性。 tnx!
标签: django django-models