django - 在点击的变量上过滤的 Django 模板
问题描述
采取以下模型:
class InsName(models.Model):
id = models.AutoField(primary_key=True)
name = models.CharField(max_length=30, verbose_name = "Insurer/Broker")
def __str__(self):
return self.name
class Development(models.Model):
id = models.AutoField(primary_key=True)
logno = models.CharField(max_length=13, unique=True)
insurer = models.ForeignKey(InsName, on_delete=models.SET_NULL, null=True, blank=True)
Phase_status = (
('dev','Development'),
('review','Review')
)
phase = models.CharField(max_length=10,
choices = Phase_status,
default='review',
)
user = models.ForeignKey(User, on_delete=models.CASCADE)
date_added = models.DateField(default=datetime.date.today)
comments = models.TextField(max_length=350)
def get_absolute_url(self):
return reverse('development-detail', args=[str(self.id)])
def __str__(self):
"""String for representing the Model object."""
return f'{self.id} ({self.insurer})'
我有一个输出发展表的模板。我想要的是,当Insurer
单击它时,它会显示一个为该选择过滤的所有开发的模板。
我一直在尝试各种事情,但我不知道如何将变量Insurer
名放入视图:
def insurer_filter(request):
insname = InsName.objects.filter(name = {{ value }})
ins_name = Development.objects.filter(insurer = insname)
return render(request, 'insurer_filter.html', context = ins_name)
请原谅我狡猾的编码(或任何建议都有帮助!)。我对此完全陌生,只是找到了自己的脚,但在执行上述操作时我找不到任何帮助。
当前开发列表模板:
{% extends "base_generic.html" %}
{% block content %}
<h1>My Developments</h1>
{% if mydevs %}
<table style="width:100%">
<thead>
<tr>
<td>Log Number</td>
<td>Client</td>
</tr>
</thead>
<tbody>
{% for development in mydevs %}
<tr>
<td><a href="{{ development.get_absolute_url }}">{{development.logno}}</a></td>
<td><a href="insurer_filter/?name={{ value }}">{{development.insurer}}</a></td>
</tr>
{% endfor %}
</tbody>
</table>
然后我猜我的新insurer_filter 模板将类似于:
{% extends "base_generic.html" %}
{% block content %}
<h1><Value> Developments</h1>
{% if ???%}
<table style="width:100%">
<thead>
<tr>
<td>Log Number</td>
<td>Client</td>
</tr>
</thead>
<tbody>
{% for development in wilsons %}
<tr>
<td><a href="{{ development.get_absolute_url }}">{{development.logno}}</a></td>
<td>{{development.insurer}}</td>
</tr>
{% endfor %}
</tbody>
</table>
解决方案
试试这个:
网址.py:
url(r'insurer_filter/(?P<name>[A-Za-z]+)/$', views.insurer_filter),
视图.py:
def insurer_filter(request, name):
insname = InsName.objects.filter(name = name)
ins_name = Development.objects.filter(insurer = insname)
return render(request, 'insurer_filter.html', context = ins_name)
推荐阅读
- prolog - 执行列表转换,Prolog
- python - 如何访问电子表格中的另一个页面?
- javascript - 车把问题
- android - 方法代码太大!android compileSdkVersion 27 更改为 compileSdkVersion 30 后
- angular - 在 NgRx 中,在哪里将来自服务器的响应数据(通过副作用获得)转换为组件可以理解的状态?
- python - 如何使用 python 将 UTC 时间转换为 UTC 中的相应日期和时间?
- python - 如何永远运行python代码直到停止它?
- javascript - 使用 Javascript 的文本框中的 Control+N 键事件
- email - SPF 记录不安全的配置
- c# - 无法在 Tizen.NET 可穿戴应用程序中向 tizen-manifest.xml 添加权限