2015-12-21 7 views
0

Я хочу собрать те же теги на frontend или моей странице просмотра, исходящей из базы данных. Теги собираются в списке.jinja2 сбор и подсчет таких же строк

model.py

class Note(Document): 
    tags = db.ListField(db.StringField()) 

Пример данных MongoDB:

"notes" : [ 
     { 
      "title":"lipsum", 
      "content":"lipsum", 
      "tags" : [ 
       "python", 
       "OOP", 
       "mongoengine" 
      ] 
     }, 

     { 
      "title":"lipsum2", 
      "content":"lipsum2", 
      "tags" : [ 
       "sql", 
       "functional", 
       "mongoengine", 
       "python" 
      ] 
     } 

Как я могу получить следующий результат jinja2, питона, flask.ext или mongoengine себя?

mongoengine 2 
OOP 
functional 
python 2 
sql 

Спасибо за ваши предложения.

+0

Я производить словарь имен тегов и счетчиков в Python, а затем передать это как параметр в ваш шаблон (rath чем попытка выполнить это вычисление с помощью jinja2 в самом шаблоне). – larsks

+0

спасибо @larsks Я попробую ваши предложения. – oyilmaztekin

ответ

1

mongoengine QuerySet.distinct и QuerySet.count функции могут быть вашим другом здесь:

tag_counts = {} 
tag_names = Note.objects.distinct('tags') 
for tag in tag_names: 
    tag_counts [tag] = Note.objects(tags=tag).count() 

или в одной строке:

dict([(tag, Note.objects(tags=tag).count()) for tag in Note.objects.distinct('tags')]) 

Они как построить этот словарь:

{'OOP':1, 'mongoengine':2 ,'python': 2, 'functional':1, 'sql':1} 
+0

Спасибо за ваш ответ. Я не определял ничего как ** тег ** _ (tags = tag) _. Переменная ** tags ** исходит из модели, но я не понял ** tag **, откуда она появилась? – oyilmaztekin

+0

'tag' исходит из понимания списка python. Я отредактирую ответ, чтобы сделать его более понятным. –

 Смежные вопросы

  • Нет связанных вопросов^_^