【问题标题】:Django multiple dropdowns showing model objects显示模型对象的 Django 多个下拉列表
【发布时间】:2020-03-17 13:49:33
【问题描述】:

我想要多个下拉菜单,每个下拉菜单显示一个特定模型的可用对象。

所以下拉菜单 1:

Apples
Oranges
Pears

还有,下拉菜单 2:

Apples
Oranges
Pears

等等

额外的问题是让这些下拉列表链接/依赖,以便当用户选择项目时,这些选择的项目将从剩余的下拉列表中删除。

这可能吗?

【问题讨论】:

标签: django django-models django-forms


【解决方案1】:

这是可能的。将您的模型导入视图文件。 示例:

def editUser(request):
    users = "YourModel".objects.all()

    if request.method="POST":
       selected_Item = request.POST['user.id']
       userID = Employee.objects.get(id=selected_item)
       userID.delete()


    context = {
             'user' : users
    }

    return render(request, "your_template_name", context)

因此,您可以通过您的 ID 或名称选择您的项目。在您的模板中,您可以说“user.your_stuff”。所以如果你的模型有名字之类的东西,你可以写 user.name。 然后删除这些东西。

上下文层次就像字典。您可以在模板中使用它。

<form method="POST" > {%csrf_token%}
<select name="user.id">
{% for entry in user %}
    <option>  {{ entry.id }} </option>
{% endfor %}
</select>

<input type = "submit" value="Submit">
</form>

所以现在您有一个下拉菜单,其中列出了用户的所有条目。 您可以在您的视图中编辑您的退货,因此只需调用同一个页面,您只需“刷新”站点,您想要删除的值就会消失。

我很抱歉我的英语不好或我的解释不好。我还在提高我的英语技能,而且我也是新的 StackOverflow 和 Django :P 如果您还有任何问题,我在这里为您提供帮助! :)

【讨论】:

    【解决方案2】:

    您可以在 html 列表中使用 for 循环。

    index.html

    <ul >
    {% for element in model %} 
    <li class="product"> {{ element }} </li>
    {% endfor %}
    </ul>
    

    views.py

    def index_function(request):
        model = product_model_name.objects.all()
        context = {
            'model': model,
        }
        return render(request, 'index.html', context)
    

    现在你只需要设置 ul 的样式,有大量不同样式的教程!

    额外问题 您可以使用 JavaScript 处理此问题。使用 addEventListener、this 和 element.style.display = "none",您可以隐藏链接的 div,更改其 css 属性。

    【讨论】:

    • 我试过这个,但我如何将“模型”传递给 html,我是否像表单一样从视图中传递它?也就是说,我真正需要的是一个 Django 表单,其中包含多个包含相同值的下拉列表,这些值是来自我的 Django 模型之一的对象。
    • 我编辑了答案。该代码是关于views.py中的一个查询,然后您将其显示在html文件中。
    • 你可能暗示了它,或者我可能遗漏了一些东西,但这不会创建下拉菜单
    • 答案不会创建下拉列表,它只会自动创建列表中的字段。现在您必须为下拉菜单实现 CSS 代码,这里有一个指南。 [w3schools.com/css/css_dropdowns.asp]
    猜你喜欢
    • 1970-01-01
    • 2020-12-10
    • 1970-01-01
    • 2021-05-07
    • 2020-07-25
    • 2021-06-13
    • 2019-01-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多