0
私のデータベースにクエリを出し、コレクションレビューを選択します。フィルタリング、整理、グループ化、並べ替え、クエリからの結果の制限が必要です。Django - Mongoengine Group By + Where + Sort +結果を制限して印刷する
クエリはviews.pyにあります。それはうまく動作しますが、私はhtmlファイルのコンテキスト変数 "best_hotels"の内容を印刷するのに問題があります。ここで
from __future__ import unicode_literals
from django.db import models
from mongoengine import *
class Reviews(Document):
# _id = IntField(primary_key=True)
content_lenght = IntField()
title_score = IntField()
content_eval = StringField()
review_stars = FloatField()
hotel_name = StringField()
review_score = IntField()
city = StringField()
helpful_reader = IntField()
title = StringField()
content_score = IntField()
stars_eval = StringField()
content = StringField()
title_eval = StringField()
review_eval = StringField()
views.pyは、彼女がreviews.htmlここ
...
<h2>The 10 best hotels with the most positiv ratings</h2>
<ul>
{% for row in best_hotels %}
<li>Name: {{ row.id }} - {{ row.sum }} positiv ratings</li>
{% endfor %}
</ul>
...
HTMLの結果
The 10 best hotels with the most positiv ratings
Name: - 678 positiv Ratings
Name: - 387 positiv Ratings
Name: - 364 positiv Ratings
Name: - 305 positiv Ratings
Name: - 292 positiv Ratings
Name: - 269 positiv Ratings
Name: - 267 positiv Ratings
Name: - 224 positiv Ratings
Name: - 219 positiv Ratings
Name: - 181 positiv Ratings
ホテルの名前です
from el_pagination.decorators import page_templates
from django.shortcuts import render
from django.http import HttpResponse
from models import Reviews, Evaluation
def reviews(request):
best_hotels = Reviews.objects.aggregate(
{
"$match": {"review_eval": "positiv"}
},
{
"$group" : {"_id" : "$hotel_name", "sum" : { "$sum" : 1 } }
},
{
"$sort" : {"sum" : -1}
},
{
"$limit": 10
}
)
context = {
'best_hotels' : best_hotels
}
return render(request, 'review/reviews.html', context)
です不足している。どうして?
ホテルの名前が存在するかどうかを確認するためにhtmlファイルを変更しました。ここでは新しいものである:
<h2>The 10 best hotels with the most positiv ratings</h2>
<ul>
{% for row in best_hotels %}
<li>{{ row}}</li>
{% endfor %}
</ul>
ここでは、hotelnamesがあることがわかります新しいHTMLファイルの結果
ここ{u'sum': 678, u'_id': u' Steigenberger Airport Hotel '}
{u'sum': 387, u'_id': u' Steigenberger Frankfurter Hof '}
{u'sum': 364, u'_id': u' Sheraton Frankfurt Airport Hotel & Conference Center '}
{u'sum': 305, u'_id': u' Wyndham Grand Frankfurt '}
{u'sum': 292, u'_id': u' Innside by Meli\xe1 Frankfurt Niederrad '}
{u'sum': 269, u'_id': u' Innside by Meli\xe1 Frankfurt Eurotheum '}
{u'sum': 267, u'_id': u' Hilton Garden Inn Frankfurt Airport '}
{u'sum': 224, u'_id': u" 25hours Hotel by Levi's "}
{u'sum': 219, u'_id': u' 25hours Hotel The Goldman '}
{u'sum': 181, u'_id': u' The Westin Grand Frankfurt '}
です。しかし、なぜ最初のhtmlファイルにはありませんか?
ホテルの名前は{{row.id}}変数 –
にある可能性があります。その理由はおそらく_idであり、idではないからです。 – Aayushi
変数と属性は、下線で始まることはできません。 {{row._id}}や{{_id}}は使用できません –