0

私はここでこの前の質問に従おうとしています:
Django: オブジェクトのリストに関連するレコードのリストを取得する

しかし、それを機能させることができないようです。

飼い主のリストは取得できますが、ペットの名前のリストは取得できません。HTML コードは 2 番目の FOR ループを実行していないようです。何か案は?

models.py

class Teacher(models.Model):
        teacher = models.CharField(max_length=300, verbose_name="teacher")

        def __unicode__(self):
          return self.teacher

class Owner(models.Model):
        relevantteacher = models.ForeignKey(Teacher, verbose_name="teacher")       
        owner = models.CharField(max_length=300, verbose_name="owner")

        def __unicode__(self):
          return self.owner

class PetName(models.Model):
        relevantowner = models.ForeignKey(Owner, verbose_name="owner")
        pet_name = models.CharField(max_length=50, verbose_name="pet Name")

    def __unicode__(self):
      return self.pet_name

ビュー.py

def ownersandteachers(request):   
   owners = Owner.objects.all()

   context = {'owners': owners}
   return render(request, 'ownersandpets.html', context)

テンプレート

{% for i in owners %}
    {{ i.owner }} has pets:<br />
    {% for v in owners.petname_set.all %} //this doesn't seem to be executing
     - {{ v.pet_name }}<br />
    {% endfor %}
{% endfor %}
4

1 に答える 1

1

あなたがやっている

{% for v in owners.petname_set.all %}

どこでやるべきか

{% for v in i.petname_set.all %}

ownersはクエリセットですが、この場合petname_setはクエリセット内の個々のオブジェクトを取得する必要があります。i

また、存在する場合は状態チェックをお勧めしi.petname_setます。そうでない場合は、has pets:テキストを表示しません。

{% for i in owners %}
    {{ i.owner }} 
    {% if i.petname_set.count %} has pets:<br />
        {% for v in i.petname_set.all %} //this doesn't seem to be executing
         - {{ v.pet_name }}<br />
        {% endfor %}
    {% endif %}
{% endfor %}
于 2013-08-05T21:07:18.380 に答える