1

我有一个数据库,每个用户都有多个用户名和电话号码。在我创建的 Django 模板上,用户会看到一个名称列表,用户可以单击一个名称或多个名称,数据库将使用分配给该名称的电话号码进行响应。但是,我在 Django 模板中使用 for 循环来迭代数据库中的名称以显示给用户,因为计数可以更改。当我选择一个名字时它可以正常工作,但是,如果我选择多个名字,它会选择最后一个名字而不是显示所有名字。此错误是由于我的 for 循环解决方案为所有输入分配了相同的“名称”。任何人都知道我该如何解决这个问题?

我的视图表格:

def select_contact(request):
    alldata = identity_log.objects.values_list("first_name", flat=True)
    #https://docs.djangoproject.com/en/4.0/ref/models/querysets/
    checkform = contact_form(request.POST or None)
    context = {'alldata': alldata}
    print(checkform)
    display_type = request.POST.get("contact_option", None)
    if display_type in alldata:
        print(display_type)
    return render(request, 'message_me/select_contact.html', context)

我的模板:

{% extends "base.html" %}
{% load static %}


{% block body %}
<p>Please select your favorite Web language:</p>
{% for x in alldata %}
  <form id="contact_option" role="form" action="" method="POST">
    {% csrf_token %}
    <input type="checkbox" id="contact_option" name="contact_option" value="{{x}}">
  <label for="contact_option">{{x}}</label><br>
{% endfor %}
    <div class="row">
        <div class="col-md-12"> <input type="submit" name="submit" class="btn btn-success btn-send pt-2 btn-block " value="Continue"> </div>
    </div>
</form>

{% endblock %}

HTML 文档的图像

4

1 回答 1

0

代替 :

 <input type="checkbox" id="contact_option" name="contact_option" value="{{x}}">

 <input type="checkbox" id="contact_option{{x}}" name="contact_option{{x}}" value="{{x}}">

现在,每个用户都有一个唯一的 ID。

于 2021-12-17T09:08:07.713 回答