【问题标题】:How to iterate queryset dictionary in django template如何在 Django 模板中迭代查询集字典
【发布时间】:2019-02-05 06:19:32
【问题描述】:

这是我从视图中得到的字典:

{'questions_in_topic': <QuerySet [{'question_id__description': 'Describe your most significant leadership experience'}, {'questi
on_id__description': 'Which kind of leader are you?'}]>}

如何在 django 模板中显示个别问题?

视图如下:

def get_question_from_topic(request):
    if request.method == "GET":
        questions_in_topic = QuestionTopic.objects.filter(topic_id=request.GET['topicId']).values('question_id__description').order_by('question_id__description')
        print(questions_in_topic)
        context = { 'questions_in_topic': questions_in_topic }
        print(context)
        return render(request, 'recruiter/add_question_library.html', context)
    return render(request, 'recruiter/add_question_library.html', context)

【问题讨论】:

    标签: django dictionary django-templates


    【解决方案1】:
    {% if questions_in_topic %}
    {% for question in questions_in_topic %}
        Question: {{ question }}
    {% endfor %}
    {% endif %}
    

    【讨论】:

    • 会发生什么?你有剩下的模板吗?请发布更多详细信息!
    【解决方案2】:

    如果您只访问查询集中的一个字段,那么使用values_list 可能更适合您的需求

    变化

    questions_in_topic = QuestionTopic.objects.filter(topic_id=request.GET['topicId']).values('question_id__description').order_by('question_id__description')
    

    questions_in_topic = QuestionTopic.objects.filter(topic_id=request.GET['topicId']).order_by('question_id__description').values_list('question_id__description', flat=True)
    

    在此questions_in_topic 之后将是一个字符串列表。然后,您可以像这样在模板中使用它们

    {% for question in questions_in_topic %}
        Question: {{ question }}
    {% empty %}
        There are no questions.
    {% endfor %}
    

    【讨论】:

    • 它将查询集转换为列表,但上面的迭代不起作用!
    • @SomnathDas 你的模板代码现在是什么样子的?不工作是什么意思?什么是错误/您在视图中看到了什么?
    • 我想查看问题列表,你为模板共享的代码没有给出任何输出:它进入空标准
    • 视图返回正确的字典,但无法通过模板显示
    • 应该发生的是questions_in_topic 现在是一个包含两个问题字符串的列表。是这样吗?此外,您说它没有显示任何输出并且进入空标准 - 这是否意味着它显示“没有问题”。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-27
    • 2019-09-14
    • 2022-01-21
    相关资源
    最近更新 更多