Не совсем понятно, что вы пытаетесь сделать здесь. flashcard_list
- это (пустой) список, который вы определяете перед циклом. Не имеет смысла вызывать функции набора запросов Django, такие как count
и filter
для него (есть метод списка с именем count, но, как говорит ошибка, он принимает аргумент и подсчитывает, сколько раз этот аргумент является найдено в списке).
Вы хотели использовать вместо flashcard.count()
? Это все еще не имеет смысла, потому что flashcard - это отдельный экземпляр Flashcard, а не набор запросов. Вам нужно будет более точно объяснить, что вы надеетесь сделать.
Редактировать после комментария Правильно, поэтому я думаю, что проблема в том, что вы пытаетесь сделать все это внутри цикла, который перебирает каждую карточку по какой-то причине. На самом деле, я не думаю, что вы хотите петлю вообще. Примерно так будет лучше:
def report(request):
flashcard_dict = {}
flashcards = Flashcard.objects.all():
flashcard_dict['list_object'] = flashcards
flashcard_dict['words_count'] = flashcards.count()
flashcard_dict['words_known'] = flashcards.filter(known=True).count()
flashcard_dict['percent_known'] = int(float(flashcard_dict['words_known']) / flashcard_dict['words_count'] * 100)
return render_to_response('report.html', flashcard_dict)
Здесь вы можете видеть, что вы работаете с набором запросов всех карточек, а не с пустым списком. И вы создаете один словарь, а не список словарей, и этот словарь сам становится контекстом шаблона - так что в шаблоне вы можете ссылаться на {{ words_count }}
и т. Д.