2017-07-16 85 views
0

我有一個定義的這兩款車型一對多的關係Django的獲得ForeignKey的對象的領域模型中

從django.core.validators匯入django.db進口車型

class Template(models.Model): 
    name = models.CharField(max_length=100) 
    fields = models.IntegerField() 

    def __str__(self): 
     return self.name 


class Page(models.Model): 
    template = models.ForeignKey(Template, related_name='pages') 

    title = models.CharField(max_length=100) 

    text = [] 

    for i in range(template.fields): #Error occuring here 
     text[i] = models.TextField() 

    def __str__(self): 
     return self.title 

我RegexValidator 想要得到template.fields的值,但我得到這個錯誤

for i in range(template.fields): 
AttributeError: 'ForeignKey' object has no attribute 'fields' 

我使用ForeignKey對象是否錯誤?任何幫助將不勝感激

+0

這根本沒有任何意義。你爲什麼要這樣做? –

+0

因此,頁面將具有不同數量的文本字段,這取決於其父級模板中定義的內容。 Daniel Roseman – dwmyfriend

+1

您正在訪問類體中的'template',所以它只是一個類而不是實際的數據。一旦你有該模型的*實例*,你可以訪問被認爲是'template'的字段。 – Grimmy

回答

0

您無法獲取數據迭代模板字段。如果修改它,請使用__init__函數。

class Template(models.Model): 
    name = models.CharField(max_length=100) 
    fields = models.IntegerField() 

    def __str__(self): 
     return self.name 


class Page(models.Model): 
    template = models.ForeignKey(Template, related_name='pages') 

    title = models.CharField(max_length=100) 

    text = [] 

    def __init__(self, request, *args,**kwargs): 
     super (Page,self).__init__(*args,**kwargs) 
     self.fields['template'].queryset = Template.objects.all() 

    def __str__(self): 
     return self.title 
相關問題