【问题标题】:creating dynamic dependent drop down from database in django在 django 中从数据库创建动态依赖下拉列表
【发布时间】:2020-06-28 09:23:44
【问题描述】:

我有两个来自 mysql 数据库的下拉列表,它们都是相互依赖的。我需要的是当我从第一个下拉列表中选择一个区域时,第二个下拉列表以相应地过滤匹配第一个下拉列表中的区域。谁能帮我吗。 [第一个下拉列表是区域,第二个下拉列表是区域]。请帮助我解决这两个文件中的更改。提前致谢。

models.py

from django.db import models

在这里创建您的模型。

views.py

def 仪表板视图(请求): 导入mysql.connector

connection = mysql.connector.connect(host='localhost',
                    database='lab_view',
                    user='root',
                    password='inbabtslabuser'
                    )
sql_select_Query ="""select DISTINCT Area from main_labview;"""
cursor = connection.cursor()
cursor.execute(sql_select_Query)
records = cursor.fetchall()

sql_select_Query ="""select DISTINCT Zone from main_labview;"""
cursor = connection.cursor()
cursor.execute(sql_select_Query)
records1 = cursor.fetchall()

sql_select_Query ="""select DISTINCT Rack from main_labview;"""
cursor = connection.cursor()
cursor.execute(sql_select_Query)
records2 = cursor.fetchall()
a_list=[]
z_list=[]
r_list=[]
for row in records2:
    r_list.append(row[0])
for row in records:
    a_list.append(row[0])

for row in records1:
    z_list.append(row[0])    
print("\n\n###########################################\nFrom Database:\nAreas: ", a_list)
print("Zones: ",z_list)
print("###########################################\n\n")

context={'Area':a_list, 'Zones':z_list, 'Racks':r_list}

return render(request, 'app/dashboard.html', context)

.html

<form action="/db2/" method="POST"> {% csrf_token %}
<strong><font color="red">Area:</font></strong>
<select id="Area_ID" name="Area" >
<option value="None" selected>Select Area</option>
{% for a in Area %}
    <option value="{{ a }}">{{ a }}</option>
{% endfor %}
</select>


      <br><br>
<strong><font color="red" >Zone:</font></strong>
<select id="Zone_ID" name="Zone" >
<option value="None" selected>Select Zone</option>
{% for z in Zones %}
    <option value="{{ z }}">{{ z }}</option>
{% endfor %}
</select>





        <br> </br>
        <button type="submit" name="try" onClick="location.href='{% url 'db2' %}';" value='submits'>Find Racks</button><br>

        </form>

【问题讨论】:

  • 你能分享你的model.py代码sn-p
  • 你好,我已经分享了我的 models.py,我还没有在 sn-p 中做任何事情。请仔细查看,谢谢。 @ShahidTariq
  • @andarsh 您的 models.py 文件中没有任何内容。如何为您的应用创建模型
  • 我只是从 mysql 数据库的查询中获取数据,并创建一个列表并将该数据列表推送到 html 页面中。我真的必须为此创建models.py吗?如果可以,请指导我,我对 django 很陌生!谢谢 。 @ShahidTariq
  • @andarsh Django 为 ORM 处理后端数据库提供了最好的支持。您只需要使用 Django 模型创建表,而不是使用 ORM 查询来创建更新和删除操作。在这里查看docs.djangoproject.com/en/3.0/topics/db/models/…

标签: django django-models django-rest-framework django-forms django-views


【解决方案1】:

models.py 文件中没有任何内容。我相信你正在做 完全错误的方式。您应该通过 Django 模型创建表,而不是直接通过在 MYSQL shell 中运行 create table 命令来创建表,例如:

from django.db import models

class Area(models.Model):
    name = models.CharField(max_length=30)

    def __str__(self):
        return self.name

class Zone(models.Model):
    Area = models.ForeignKey(Area, on_delete=models.CASCADE)
    name = models.CharField(max_length=30)

    def __str__(self):
        return self.name

class Rack(models.Model):
    Zone = models.ForeignKey(Zone, on_delete=models.CASCADE)
    name = models.CharField(max_length=30)

    def __str__(self):
        return self.name

此外,直接连接 MySQL 并不是一个好习惯 Django 作为 Django 自动处理数据库连接,请参见此处: https://docs.djangoproject.com/en/3.0/topics/db/models/#module-django.db.models

最重要的是,您尝试做的所有事情都是最好的例子 这里: https://simpleisbetterthancomplex.com/tutorial/2018/01/29/how-to-implement-dependent-or-chained-dropdown-list-with-django.html你可以关注这个博客并尝试在 Django 中相互依赖的下拉菜单

【讨论】:

    猜你喜欢
    • 2017-07-25
    • 2019-10-20
    • 1970-01-01
    • 2018-06-17
    • 1970-01-01
    • 2015-08-29
    • 1970-01-01
    • 2015-01-06
    • 2018-01-18
    相关资源
    最近更新 更多