首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python/Django:如何在HTML中同时显示主模型和外键模型

Python/Django:如何在HTML中同时显示主模型和外键模型
EN

Stack Overflow用户
提问于 2017-10-14 19:18:39
回答 1查看 153关注 0票数 1

好样的,我是Django和python的初学者,两天前刚开始学习。目前,我正在尝试对views.py中的数据进行过滤,并创建一个将显示在主页中的上下文,其中包含初始模型和“外键”模型。然而,我很难在网上寻求帮助,尽管这是一个简单的问题。来了..。

所涉及的模型:

代码语言:javascript
复制
class Plan(models.Model):
    plan_ID = models.CharField(
        primary_key=True,
        max_length=8,
        validators=[RegexValidator(regex='^\w{8}$', message='Length has to be 8', code='nomatch')]
    )
    plan_crisisID = models.ForeignKey(Crisis, on_delete=models.CASCADE)
    plan_status = models.CharField(max_length=50)

class Crisis(models.Model):
    crisis_ID = models.CharField(
        primary_key=True,
        max_length=4,
        validators=[RegexValidator(regex='^\w{4}$', message='Length has to be 4', code='nomatch')]
    )
    crisis_name = models.CharField(max_length=50)

HTML的Views.py:

代码语言:javascript
复制
def home(request):
    template = loader.get_template('pmoapp/home.html')
    crisisList = Crisis.objects.filter(crisis_status='Ongoing').order_by('-crisis_ID')

    context = {
        'crisisList': crisisList,
        #'planList': planList
    }
    return HttpResponse(template.render(context, request))

最后,我的HTML页面:

代码语言:javascript
复制
<tbody>
    {% if crisisList %}
         {% for crisis in crisisList %}
              <tr>
                   <td>{{ crisis.crisis_ID }}</td>
                   <td><a href="/report/{{ crisis.crisis_ID}}">{{ crisis.crisis_name }}</a></td>
                   <td>{{ crisis.crisis_dateTime }}</td>
                   <td>planid</td>
                   <td>planstatus</td>
             </tr>
          {% endfor %}
      {% else %}
          <p>No crisis available.</p>
      {% endif %}
 </tbody>

我有几件事我不知道怎么做。对不起,请容忍我..。

如上所述,我目前只能显示危机模型的属性,也不知道如何显示计划,也不知道如何过滤数据以获得具有相同危机ID和最高计划ID的计划

我在危机和计划之间有一个多对一的关系,这样一个危机可以有多个计划,由‘Foreign’:plan_crisisID链接。我想让HTML显示所有的危机对象,以及具有最高id值的计划,并且以上面看到的HTML格式属于相同的危机(planid,planstatus)。

我知道这段代码的逻辑部分是用views.py完成的,但是我不知道如何开始,也不知道该怎么做。谢谢您的帮助,我会提供任何需要的额外信息。我有许多其他类似的模型与外键和多到多的链接和类似的情况.我希望从这里的答案中学习,这样我就可以在我的项目中的其他地方复制这个。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-10-14 19:37:12

我认为你是在正确的轨道上,但应该从另一端开始,因为危机正在计划中。

在视图拉计划列表而不是危机列表中,您可以:

代码语言:javascript
复制
<tbody>
{% if planList %}
     {% for plan in planList %}
          <tr>
               <td>{{ plan.crisisID.crisis_ID }}</td>
               <td><a href="/report/{{ panel.crisisID.crisis_ID}}">{{ crisis.crisis_name }}</a></td>
               <td>{{ plan.crisisID.crisis_dateTime }}</td>
               <td>{{ plan.plan_ID }}</td>
               <td>{{ plan.planstatus }}</td>
         </tr>
      {% endfor %}
  {% else %}
      <p>No crisis available.</p>
  {% endif %}
</tbody>

哦,您可能应该将查询交换为如下所示:

代码语言:javascript
复制
planList = Plan.objects.filter(crisis_ID__crisis_status='Ongoing').order_by('-crisisID__crisis_ID')
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46748427

复制
相关文章

相似问题

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