【发布时间】:2019-02-26 03:42:54
【问题描述】:
我一直在努力解决一些我认为是我的愚蠢疏忽的事情。我有一个表单,它将输入提供给一个视图,该视图查询我拥有的一些 SQL 表并返回一个列表,其中包含每个表中的列**。
发生的奇怪事情是我的列表出现在
<QuerySet{[ ]}>
每个列表对象周围的括号。谁能告诉我如何避免这种情况?
非常感谢。
**我正在使用此列表而不是 ForeignKeys 来组合这些表,因为我在使用 SQLAlchemy 和 Postgres 正确填充我的 SQL 数据库时遇到了很糟糕的情况,并且读到存在已知问题,所以我放弃了那个方法。
views.py
from django.shortcuts import render, get_object_or_404
from django.http import HttpResponseRedirect, HttpResponse, Http404
from django.views import generic
from django.views.generic.edit import CreateView, UpdateView, DeleteView
from django.urls import reverse_lazy
from .models import *
from .forms import QuoteForm, RfqForm
def bom_result(request):
if request.method == 'POST':
form = RfqForm(request.POST)
if form.is_valid():
bom_list = []
rfq = {}
rfq_search = form.cleaned_data['rfq_entered']
rfq['rfq_num'] = rfq_search
rfq['bom'] = Quotereq.objects.values('bom_entered').filter(rfq_num__exact=rfq_search)
rfq['part_num'] = Bom.objects.values('partnum').filter(bom__exact='07-00-000019')
bom_list.append(rfq)
context = {'bom_list': bom_list}
return render(request, 'quote/result.html', context)
else:
return HttpResponse("<h1>Something Went Wrong</h1>")
else:
form = RfqForm()
context = {'form': form}
return render(request, 'quote/lookup.html', context)
结果.html
{% extends "base.html" %}
{% load static %}
{% block title %}{{title}}{% endblock title %}
{% block sidenav %}
{% for page in page_list %}
<li>
<a href="{{page.permalink}}">{{page.title}}</a>
</li>
{% endfor %}
{% endblock sidenav %}
{% block content %}
{% autoescape off %}
{{ content }}
{% endautoescape %}
{% if bom_list %}
{% for bom in bom_list %}
<table>
<tr>
<th><h1>RFQ Number</h1></th>
<th><h1>BOM</h1></th>
</tr>
<tr>
<td>
<ul style="list-style-type:none">
<li>{{ bom.rfq_num }}</li>
</ul>
</td>
<td>
<ul style="list-style-type:none">
<li>{{ bom.bom }}</li>
</ul>
</td>
<td>
<ul style="list-style-type:none">
<li>{{ bom.part_num }}</li>
</ul>
</td>
</tr>
</table>
{% endfor %}
{% else %}
<p>No Matching RFQ in Database</p>
{% endif %}
{% endblock content %}
这是表格输出的内容:
【问题讨论】:
-
好吧,
partnum会产生 multiple 结果和QuerySet,所以如果你想显示这些元素,你需要 iterate在模板中覆盖它,并渲染各个元素。 -
但是不使用
ForeignKeys最终只会导致更多麻烦。 -
但是你不需要给它们下标,你用
{% for part in bom.part_num %} {{ part }} {% endfor %}迭代。 -
啊,是的,你需要提取它,用
{% for part in bom.part_num %} {{ part.partnum }} {% endfor %},所以在渲染元素的变量中添加一个.partnum。 -
谢谢你,Willem,你帮助了我好几次。如果您在答案中发布,我会标记它是正确的,以便您获得应得的分数。
标签: python sql django postgresql