【问题标题】:Django getting list of records (with FK) related to object -not rendering template correctlyDjango获取与对象相关的记录列表(使用FK) - 未正确呈现模板
【发布时间】:2013-08-05 21:02:27
【问题描述】:

我正在尝试在此处关注上一个问题:
Django: getting the list of related records for a list of objects

但似乎无法让它工作。

我得到了主人的名单,但没有得到宠物名字的名单。 html 代码似乎没有执行第二个 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

views.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 %}

【问题讨论】:

    标签: django


    【解决方案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 %}
    

    【讨论】:

      猜你喜欢
      • 2020-09-06
      • 2011-02-01
      • 2015-04-01
      • 1970-01-01
      • 2021-09-07
      • 1970-01-01
      • 2018-03-29
      • 2011-09-01
      • 2015-06-18
      相关资源
      最近更新 更多