2017-07-16 3 views
0

でのForeignKeyオブジェクトのフィールドを取得ジャンゴ私はdjango.core.validatorsから多くの関係</p> <p>に1で定義されたこれら2つのモデルはdjango.db輸入モデルからRegexValidator をインポートしているモデル

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 

I 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 
関連する問題