Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django 3将来自多个关系的DetailView和items(ListView)组合在一个模板中_Django_Django Templates_Django Queryset - Fatal编程技术网

Django 3将来自多个关系的DetailView和items(ListView)组合在一个模板中

Django 3将来自多个关系的DetailView和items(ListView)组合在一个模板中,django,django-templates,django-queryset,Django,Django Templates,Django Queryset,我正在做一个Django3项目,我试图将人们与他们使用的产品联系起来。最终目标是显示person DetailView的详细视图,并包括他们使用ListView?的产品列表?。以下是我在模型、视图和模板中的内容: # models.py (omitting non-relevant fields) class Person(models.Model): first_name = models.CharField(max_length=50) last_name = models.

我正在做一个Django3项目,我试图将人们与他们使用的产品联系起来。最终目标是显示person DetailView的详细视图,并包括他们使用ListView?的产品列表?。以下是我在模型、视图和模板中的内容:

# models.py (omitting non-relevant fields)
class Person(models.Model):
    first_name = models.CharField(max_length=50)
    last_name = models.CharField(max_length=75, db_index=True)
    products = models.ManyToManyField('Product', through='PersonProduct')
class Product(models.Model):
    name = models.CharField("Product Name", max_length=75)
class PersonProduct(models.Model):
    person = models.ForeignKey(Person, on_delete=models.CASCADE)
    product = models.ForeignKey(Product, on_delete=models.CASCADE)
    created = models.DateTimeField(default=timezone.now)

# views.py
class PersonDetailView(DetailView):
    model = Person
    queryset = Person.objects.all()
    template_name = 'person_detail.html'

# person_detail.html (simplified for clarity)
{% extends 'base.html' %}
{% block content %}

<div class="person-detail">
    <h2>{{ person.first_name }} {{ person.last_name }}</h2>
</div>

<div class="gear-list">
    <ul>

<!--
This is where I'm stuck. I know I need to iterate over the products
that are associated with the person, but I can't figure out how to do it.
-->

    </ul>
</div>
{% endblock content %}
该页面可以很好地呈现用户的详细信息,但对于用户使用的产品,根本没有任何内容。我已经确认PersonProduct连接表中有我正在测试的特定人员的产品条目


我知道我在理解这应该如何工作方面有很大的差距,但我在任何地方都找不到答案。欢迎提供解决此问题的建议以及其他可供阅读/学习的资源。

您可以通过以下方式完成此操作:

{% for product in person.products.all %}
  <li>{{ product.name }}</li>
{% endfor %}

你的第一个建议很快就奏效了。非常感谢。现在尝试扩展到与产品相关的其他型号。我感谢你的帮助。
{% for personproduct in person.personproduct_set.all %}
  <li>{{ personproduct.products.name }} - {{ personproduct.created }}</li>
{% endfor %}