создание динамического c зависимого выпадающего из базы данных в django - PullRequest
0 голосов
/ 17 марта 2020

У меня есть два раскрывающихся списка из базы данных mysql, в которых оба являются взаимозависимыми. то, что мне нужно, это когда я выбираю область из первого выпадающего списка, второй - из выпадающего, чтобы отфильтровать соответственно область из первого раскрывающегося списка. Может кто-нибудь мне помочь. [Первый раскрывающийся список - это область, а второй - зона). Пожалуйста, помогите мне с изменениями в этих двух файлах. Заранее спасибо.

models.py

from django.db import models

Создайте здесь свои модели.

views.py

def dashboard_view (запрос): импорт 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>

1 Ответ

0 голосов
/ 17 марта 2020

В вашем файле models.py ничего нет. Я считаю, что вы делаете это совершенно неправильно. Вы должны создавать таблицы по Django моделям напрямую, не выполняя команды create table в MYSQL shell, например:

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

...