2014-09-02 121 views
0

我必須獲取與當前模型相關的所有模型。關係可以通過ForeignKey,ManyToManyField或OneToONeField,從這個模型或這個模型。在django中獲取與此模型相關的所有模型(通過ForeignKey,ManyToMay)

對於如:

我有一個模型:

class MyModel(models.Model): 
field = models.Charfield(...) 
type = models.ForeignKey('Type', ...) 

class AnotherModel(models.Model): 
label = models.ForeignKey(MyModel, ...) 
... 

class Type(models.Model): 
name = models... 
... 

我需要找到模型MyModel,這意味着,如果我有一個函數get_related_models的相關模型, get_related_models(MyModel)應該返回[AnotherModel,Type]

注意:這個的最終用途是我需要在此模型及其相關模型中有任何變化時使MyModel的緩存無效(By usin g post_save)。

回答

2

您可以從_meta選項開始。

[rel.model for rel in MyModel._meta.get_all_related_objects()] 
+1

它將返回[AnotherModel],但不返回[AnotherModel,Type]。但它的確可以,因爲我們可以通過選擇具有外鍵和模型的所有字段以另一種方式找到外鍵模型。如果field.get_internal_type()==「ForeignKey」: print field.rel.to – 2014-09-03 05:51:40

相關問題