好样的,我是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>我有几件事我不知道怎么做。对不起,请容忍我..。
如上所述,我目前只能显示危机模型的属性,也不知道如何显示计划,也不知道如何过滤数据以获得具有相同危机ID和最高计划ID的计划
我在危机和计划之间有一个多对一的关系,这样一个危机可以有多个计划,由‘Foreign’:plan_crisisID链接。我想让HTML显示所有的危机对象,以及具有最高id值的计划,并且以上面看到的HTML格式属于相同的危机(planid,planstatus)。
我知道这段代码的逻辑部分是用views.py完成的,但是我不知道如何开始,也不知道该怎么做。谢谢您的帮助,我会提供任何需要的额外信息。我有许多其他类似的模型与外键和多到多的链接和类似的情况.我希望从这里的答案中学习,这样我就可以在我的项目中的其他地方复制这个。
发布于 2017-10-14 19:37:12
我认为你是在正确的轨道上,但应该从另一端开始,因为危机正在计划中。
在视图拉计划列表而不是危机列表中,您可以:
<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>哦,您可能应该将查询交换为如下所示:
planList = Plan.objects.filter(crisis_ID__crisis_status='Ongoing').order_by('-crisisID__crisis_ID')https://stackoverflow.com/questions/46748427
复制相似问题