Django的获得ForeignKey的对象的领域模型中

Django的获得ForeignKey的对象的领域模型中

问题描述:

我有一个定义的这两款车型一对多的关系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

您无法获取数据迭代模板字段。如果修改它,请使用__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