2011-11-05 40 views
3

我在我的應用程序models.py有這些模型的正確順序:Django的:這些機型

class A(models.Model): 
    #some details 
    pass 


class B(models.Model): 
    a = models.ForeignKey(A, null=True, blank=True) 
    c = models.ForeignKey(C, null=True, blank=True) 

class C(models.Model): 
    pass 

    def method(self): 
     b_list = B.objects.filter(c=self) 
     a_list = [] 
     for b in b_list: 
      a_list.append(b.a) 

     return a_list 

,因爲B中它宣稱C沒有規定這給了我當我啓動Web服務器錯誤。

那麼如果我把這些模型按順序A C B django告訴我,B沒有在C的方法()中定義。

如何解決這種「未定義」的問題在這種情況下?它似乎是圓形的!

回答

3

您可以隨時使用在這種情況下的字符串:

class A(models.Model): 
    #some details 
    pass 


class B(models.Model): 
    a = models.ForeignKey("A", null=True, blank=True) # note the quotes 
    c = models.ForeignKey("C", null=True, blank=True) # note the quotes 

class C(models.Model): 
    pass 

如果這是一個更「極端」的情況下,你不能使用這一招,宣佈C第一,然後AB,並經過那C.methoddef C_method [...] C.method = C_method)本來是要遵循的。

+0

謝謝,你的第一個選項解決了這個問題:) – apelliciari