2017-05-23 10 views
0

私は互いに3つのモデルを接続している。 GroupRequirementType --> GroupRequirement --> Requirement。私はテンプレートにすべての要件を表示するよう努力しています。次のコードは、GroupRequirementTypeオブジェクトのみを表示します。 _set.allに問題があるようです。どうしましたか?なぜ、_set.allは、テンペールで働かないのですか?

models.py:

class GroupRequirementType(models.Model): 
    name = models.CharField(_('Name'), max_length=250) 

class GroupRequirement(models.Model): 
    group_requirement_type = models.ForeignKey(GroupRequirementType, on_delete=models.CASCADE) 
    name = models.CharField(_('Name'), max_length=250) 

class Requirement(models.Model): 
    group_requirement = models.ForeignKey(GroupRequirement, on_delete=models.CASCADE) 
    name = models.CharField(_('Name'), max_length=250) 

テンプレート:

{% for group_requirement_type in group_requirement_types %} 
    {{ group_requirement_type }} 

    {% for group_requirement in group_requirement_type.group_requirement_set.all %} <!--DONT WORK. WHY?--> 
     {{ group_requirement }} 

     {% for requirement in group_requirement.requirement_set.all %} 
     {{ requirement }} 
     {% endfor %} 

    {% endfor %} 

{% endfor %} 
+1

Djangoがアンダースコアを追加してCamelCaseを自動的に小文字に変換するかどうかはわかりません。 'grouprequirement_set.all'は動作しますか? –

+0

ありがとう!あなたは正しかった。 'grouprequirement_set.all'が動作します。あなたの答えをplsではなく、コメントとして投稿してください。私は正解とマークします。 –

答えて

0

小文字にキャメルケースモデル名を変換するときDjangoは自動的にアンダースコアを追加していないように見えます。 grouprequirement_set.allが動作します。

0

私は非常にDjangoのForeignKeyのあなたのモデル宣言のrelated_nameプロパティを使用してお勧めしたい、これははるかに簡単後方関係の操作を行います、それは

models.pyのようなものに変わりますあなたの場合はhttps://docs.djangoproject.com/en/1.11/ref/models/fields/#django.db.models.ForeignKey.related_name

class GroupRequirementType(models.Model): 
    name = models.CharField(_('Name'), max_length=250) 

class GroupRequirement(models.Model): 
    group_requirement_type = models.ForeignKey(GroupRequirementType, related_name='group_requirements', on_delete=models.CASCADE) 
    name = models.CharField(_('Name'), max_length=250) 

class Requirement(models.Model): 
    group_requirement = models.ForeignKey(GroupRequirement, related_name='requirements', on_delete=models.CASCADE) 
    name = models.CharField(_('Name'), max_length=250) 

テンプレート:

{% for group_requirement_type in group_requirement_types %} 
    {{ group_requirement_type }} 

    {% for group_requirement in group_requirement_type.group_requirements.all %} <!--DONT WORK. WHY?--> 
     {{ group_requirement }} 

     {% for requirement in group_requirement.requirements.all %} 
      {{ requirement }} 
     {% endfor %} 

    {% endfor %} 

{% endfor %} 
関連する問題