python - 检索具有相同外键值的元素django python
问题描述
请问,我怎样才能在我的网页上获得所有具有相同外键的元素;我使用mysql数据库存储所有数据;然后我发送查询以将所有数据从 mysql 数据库获取到我的页面 html,我尝试在其中进行过滤,但它没有用。models.py:类 tsf(models.Model):
perimetre = models.FloatField(blank=False, null=True)
production_tsf = models.ForeignKey(production, on_delete=models.CASCADE, null=True, blank=False)
tsf_periode_1 = models.ForeignKey(periode_1, on_delete=models.CASCADE, null=True, blank=False)
tsf_periode_2 = models.ForeignKey(periode_2, on_delete=models.CASCADE, null=True, blank=True)
tsf_periode_3 = models.ForeignKey(periode_3, on_delete=models.CASCADE, null=True, blank=True)
tsf_periode_4 = models.ForeignKey(periode_4, on_delete=models.CASCADE, null=True, blank=True)
def __str__(self):
return str(self.perimetre) if self.perimetre else ''
视图.py:
def tsf_projet(request, id_production):
new_tsf = forms.tsf_form()
diction={'tsf_configuration':new_tsf, 'title':"configuration de la TSF" }
if request.method== 'POST':
new_tsf = forms.tsf_form(request.POST)
if new_tsf.is_valid():
new_tsf.save(commit=True)
perimetre = new_tsf.cleaned_data['perimetre']
tsf_periode_1 = new_tsf.cleaned_data['tsf_periode_1']
tsf_periode_2 = new_tsf.cleaned_data['tsf_periode_2']
tsf_periode_3 = new_tsf.cleaned_data['tsf_periode_3']
tsf_periode_4 = new_tsf.cleaned_data['tsf_periode_4']
diction.update({'perimetre':perimetre})
diction.update({'tsf_periode_1':tsf_periode_1})
diction.update({'tsf_periode_2':tsf_periode_2})
diction.update({'tsf_periode_3':tsf_periode_3})
diction.update({'tsf_periode_4':tsf_periode_4})
#return production_liste(request)
prod = production.objects.filter()
tsf_new=tsf.objects.filter()
diction={'tsf_affichage':tsf_new, 'tsf_configuration':new_tsf, 'title':"configuration de la TSF", 'affichage_nom':prod}
return render(request, 'simulation/tsf_projet.html', context=diction)
html文档:
{% for ts in tsf_affichage %}
{% for af in affichage_nom %}
{% if af.id == ts.production_tsf_id %} <!--comment je fais le filtre ?-->
<tr>
<td> {{ts.production_tsf.nom}} </td>
<td></td>
<td> {{ts.perimetre}} </td>
<td></td>
<td> {{ts.tsf_periode_1.taxe}} </td>
<td></td>
<td> {{ts.tsf_periode_2.taxe}} </td>
<td></td>
<td> {{ts.tsf_periode_3.taxe}} </td>
<td></td>
<td> {{ts.tsf_periode_4.taxe}} </td>
<td></td>
<td> {{ts.production_tsf.calcule_production}} </td>
{% endif %}
{% endfor %}
{% endfor %}
</tr>
解决方案
我处于类似情况并正在寻找解决方案。我有以下型号
class Session(models.Model):
name = models.CharField(max_length=100)
groups = models.IntegerField()
class GroupPin(models.Model):
session = models.ForeignKey(Session,on_delete=models.CASCADE)
pin = models.CharField(max_length=6)
我想访问会话的所有组别针。我做了以下事情:我在模板中传递了一个会话对象,并使用以下代码访问所有关联的 grouppin 对象。
{% for g_pin in session.grouppin_set.all%}
{{g_pin.pin}}
{% endfor %}
因此,“_set.all”将完成所需的工作。
假设您想要获取tsf
具有特定外键的所有对象(具有 id_production id 的生产对象),您可以通过将prod = production.objects.filter()
line 替换为以下行来简单地传递模板中的生产对象。
prod = production.objects.get(id=production_id) # you need to update this code for the case when the object does not exists.
接下来,将此对象传递给您的模板。
diction={ 'tsf_configuration':new_tsf, 'title':"configuration de la TSF", 'production':prod}
最后,您只需要更新您的模板如下
{% for ts in production.tsf_set.all %}
<tr>
<td> {{ts.production_tsf.nom}} </td>
<td></td>
<td> {{ts.perimetre}} </td>
<td></td>
<td> {{ts.tsf_periode_1.taxe}} </td>
<td></td>
<td> {{ts.tsf_periode_2.taxe}} </td>
<td></td>
<td> {{ts.tsf_periode_3.taxe}} </td>
<td></td>
<td> {{ts.tsf_periode_4.taxe}} </td>
<td></td>
<td> {{ts.production_tsf.calcule_production}} </td>
</tr>
{% endfor %}
推荐阅读
- mysql - 如果 count == 0 SQL 返回 0
- ansible - Ansible - 从列表中创建字典
- prolog - 为什么 Prolog 长度函数以 1+1+... 的形式返回总和?
- javascript - 为什么在页面加载时自动触发按钮单击事件 - React.js
- json - oracle json生成方法中的数字表示不正确
- scala - 生成具有不同列数的数据框
- c# - 用户 signalR 聊天读取的消息
- llvm - 如何使用 IRBuilder 在 llvm 中插入 stdlib C 函数?
- php - 访问禁止运行php
- html - 单击我的源代码时如何突出显示 VScode 实时服务器中的部分?