【发布时间】:2015-09-16 10:56:40
【问题描述】:
我正在使用带有 MySQL 后端的 Django 1.8。我需要从数据库中的几个表中获取两列并将它们连接起来,然后将排序结果放在网页上。到目前为止我有这个:
views.py
def herps(request):
#performs queries to get distinct species from the database
trQuery = queryBuilder(HetrRec, '_hetr')
opQuery = queryBuilder(HeopRec, '_heop')
valList = opQuery + trQuery
query = sorted(set(valList))
return render_to_response('herps.html', {'queries': query,})
对数据库执行查询的函数如下所示:
def queryBuilder(table, column_str):
genus = 'genus' + column_str
species = 'species' + column_str
filterSp = {species: 'sp.'}
query = table.objects.order_by(species, genus).values(genus, species).distinct().exclude(**filterSp)
valueList = []
for q in query:
species = ' '.join(q.values())
valueList.append(species)
return(valueList)
因此,输出以 Genus Species 的形式出现在几个表组合中。在一张表中,它出现了 Species Genus。
我已经通过这些数据删除了任何可能影响它的字符(前导/尾随空格、不完整的对等),但没有任何乐趣。
【问题讨论】:
-
您正在构建的两个列表中,哪个是正确的,您认为哪个是倒退的?
-
trQuery 出来是正确的, opQuery 回到前面。我尝试更改对 queryBuilder() 的调用顺序并使用其他表(包括链接来自多个不同表的多个查询)。只有一张表与从后到前的串联一致(先是物种,然后是属,而不是先是属,然后是物种)。
标签: python mysql django django-1.8