2013-01-19 104 views
2

我有兩個型號:Django的 - 訪問相關車型在自定義模型功能

class ModelA(models.Model): 
    b = models.ManyToManyField(ModelB, related_name = 'abs') 

class ModelB(models.Model): 
    x = models.IntegerField() 

    def foo(self): 
     self.abs.all() ... 

我想在ModelB在多對多關係的所有MODELA的foo的方法來訪問 - 我已經嘗試了本使用上述但它說'abs'不是ModelB的一個領域。我怎樣才能解決這個問題?

非常感謝

+1

你顯示的內容會起作用。你需要發佈你的實際代碼和回溯。 –

+0

pylint表示ModelB的實例沒有'abs'成員 – user973758

+1

不要依賴pylint。代碼是否真的有用? –

回答

2

你缺少return聲明在foo方法。請將self.abs.all()更改爲return self.abs.all()

-2

所有你需要的是:

class ModelA(models.Model): 
    class Meta: 
     app_label = 'app' 
    b = models.ManyToManyField(ModelB, related_name='abs') 

class ModelB(models.Model): 
    class Meta: 
     app_label = 'app' 
    x = models.IntegerField() 

    def foo(self): 
     return self.abs.all() 

我檢查這個和它的工作。

+0

這與問題有何不同?添加'app_label'不會改變任何東西。 –