Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/283.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
Python/Django:如何显示主模型和';外键模型';在HTML中一起_Python_Django - Fatal编程技术网

Python/Django:如何显示主模型和';外键模型';在HTML中一起

Python/Django:如何显示主模型和';外键模型';在HTML中一起,python,django,Python,Django,你好,我是Django和python的初学者,两天前刚开始学习。目前,我正在尝试在views.py中过滤数据,并创建一个显示在主页中的上下文,其中包含初始模型和“外键”模型。然而,我很难在网上找到帮助,尽管这是一个简单的问题。。这是 涉及的模型: class Plan(models.Model): plan_ID = models.CharField( primary_key=True, max_length=8, validators=[

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

涉及的模型:

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:

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页面:

<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>

{%if crisilist%}
{crisisList%中的危机%
{{crisis.crisis_ID}
{{crisis.crisis_dateTime}
平面
平面状态
{%endfor%}
{%else%}
没有可用的危机

{%endif%}
我有几件事在这里不知道怎么办。。对不起,请原谅我

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

我在危机和计划之间有一种多对一的关系,这样一个危机可以有多个计划,通过“外键”链接:危机计划。我想让HTML显示所有危机对象,以及id值最高且属于上述HTML格式的同一危机的计划(planid,planstatus)


我知道这段代码的逻辑部分是在views.py中完成的,但是我不知道如何开始,或者怎么做。。非常感谢您的帮助,我将提供所需的任何其他信息。。我有许多其他类似型号的外键和多对多链接以及类似情况。。我希望从这里的答案中学习,这样我就可以在我的项目中的其他地方复制这一点

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

在“视图”中,拖动平面列表而不是十字列表,然后可以:

<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>

对在我发布了这个问题后,我意识到了这一点。起初我先用危机,因为。。我不知道如何查找具有最高计划ID的计划,以及如何在views.py中通过python对其进行编码。我知道如何在其他语言中实现,但我目前不知道如何通过python在views.py中实现。。编辑:另外,由于我的危机状态为“正在进行”,因此我也不知道如何在计划列表中筛选此信息。。很抱歉给你带来不便。你刚刚读懂了我的心思!我可以在views.py中运行for循环以获取计划ID的最大值吗?或者我要导入一个数学模块来获得max()方法吗?编辑时出现错误:尝试改用它:planList=Plan.objects.filter(Plan\u crisid\u crisis\u status='continuous')很好,orderby来自crisis对象。感谢像你这样了不起的人,每天都在学习新东西,兄弟:)祝你度过愉快的一天!
planList = Plan.objects.filter(crisis_ID__crisis_status='Ongoing').order_by('-crisisID__crisis_ID')