jquery - Django如何使用下拉菜单过滤表?
问题描述
我创建了一个收集所有日常收入的应用程序。模型如下:
class Income(models.Model):
date=models.DateField('', default="GG/MM/YYYY")
income=models.DecimalField()
我创建了一个简单的模板,其中包含表单和收集了所有数据的数据表。
<form method="post">
<div class="row">
h5>Income data collection</h5>
<div class="row">
<div class="form-group col-2 0 mb-0" >
{{form.income|as_crispy_field}}
</div>
<div class="form-group col-2 0 mb-0" >
{{form.date|as_crispy_field}}
</div>
</div>
<table class="table" >
<thead>
<tr>
<th>Income</th>
<th>Date</th>
</tr>
</thead>
<tbody>
{% for inc in income%}
<tr>
<td>{{inc.income}}</td>
<td>{{inc.date}}</td>
</tr>
{% endfor %}
</tbody>
</table>
在视图中,我添加了以下过滤器:
income=Income.objects.filters(data__year='2020')
此时,我创建了另一个模型,将参考年份设置如下:
我有以下型号
class Timing(models.Model):
reference_year=models.DecimalField(max_digits=4, decimal_places=0, default="2020")
该模型具有表格视图,使客户可以注册所有参考年(2020、2021 等)。现在我想链接views.py reference_year
。income
如何?带有一个下拉菜单,其中包含所有已填充的 reference_year。因此,例如,如果客户在时序模型中保存的 reference_year 等于 2020,则客户可以在下拉列表中选择它,并且视图会动态更新过滤器。
解决方案
在你的 models.py 中添加这两个模型之间的一对一关系。
以下程序在 django 文档中给出,您可以将其用作参考。
from django.db import models
class Place(models.Model):
name = models.CharField(max_length=50)
address = models.CharField(max_length=80)
def __str__(self):
return "%s the place" % self.name
class Restaurant(models.Model):
place = models.OneToOneField(
Place,
on_delete=models.CASCADE,
primary_key=True,
)
serves_hot_dogs = models.BooleanField(default=False)
serves_pizza = models.BooleanField(default=False)
推荐阅读
- php - 图片上传到 TMP 文件位置不正确
- ruby-on-rails - Rails 6 + 纱线 + 数据表问题
- sql - 如何修复递归 CTE 以基于 sys.foreign_keys 建立表依赖关系?
- android - 根据 JSON 数据移动到多个活动
- python - 如何使用给定范围删除重复项并强制 numpy 数组中的元素是唯一的?
- reactjs - 如何使用 React HOC 进行身份验证路由?
- c - 如何使用 LimeSDR USB 正确安装 SoapySDR
- reactjs - 表单中通用 onChange 处理程序的 TS 类型
- javascript - 如何触发具有多个事件处理程序的函数(更改)
- datetime - How to get ordinal indicators (1st, 2nd, 3rd, etc) in Go