首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django DetailView:相关对象

Django DetailView:相关对象
EN

Stack Overflow用户
提问于 2021-01-20 04:22:10
回答 1查看 482关注 0票数 0

有4种型号:

models.py

代码语言:javascript
复制
class Buildings(models.Model):
    name = models.CharField(max_length=25)

class Zones(models.Model):
    name = models.CharField(max_length=25)

class Departments(models.Model):
    name = models.CharField(max_length=25)
    zone = models.ForeignKey(Zones, related_name='departments')

class Rooms(models.Model):
    name = models.CharField(max_length=25)
    department = models.ForeignKey(Departments, related_name='rooms')
    building = models.ForeignKey(Buildings, related_name='buildings')

我想做的是:

创建建筑物的DetailView,在其中我们可以看到:

  • 部门在大楼内的
  • 房间内的建筑物
  • 专区,每个房间都属于

现在在views.py,我有:

代码语言:javascript
复制
class BuildingsDetailView(DetailView):
    model = Buildings

    def get_context_data(self, **kwargs):
        context = super(BuildingsDetailView, self).get_context_data(**kwargs)
        context['Rooms'] = Rooms.objects.filter(building=self.get_object())
        context['Zones'] = Zones.objects.filter(departments__rooms__buildings=self.get_object())
        return context

detail.html In DetailView I现在可以访问房间、部门和区域,但我无法将区域与房间相匹配。它正确地打印出带有部门的建筑物和房间,然后将其与建筑中的所有区域相乘。

代码语言:javascript
复制
{% for rm in Rooms %}
    {% for zn in Zones %}
        <p> {{ rm.name }} </p>
        <p> {{ rm.department }} </p>
        <p> {{ zn.name }} </p>
    {% endfor %}
{% endfor %}

输出:

代码语言:javascript
复制
Room 1
Depart A
Zone 1

Room 1
Depart A
Zone 2

等。

如何将区域名称与建筑物中每个房间的相应部门正确匹配?房间和Department匹配正确。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-01-20 04:46:58

您正在遍历不匹配的单独查询集,只需从您拥有的实例中访问相关模型即可。在模板中尝试如下:

代码语言:javascript
复制
{% for rm in Rooms %}
    <p> {{ rm.name }} </p>
    <p> {{ rm.department }} </p>
    <p> {{ rm.department.zone.name }} </p>
{% endfor %}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65803044

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档