首页 > 解决方案 > 如何从 Django 数据库中填充下拉菜单

问题描述

我想从数据库中的数据创建两个下拉菜单。

在过去的几个小时里,我一直在努力解决这个问题,不知道如何解决它。我已经使用带有 sqlite3 的 Jupyter 将我的 CSV 文件导入到我的数据库中:

import pandas as pd
import sqlite3

lol = pd.read_csv('LeagueofLegends.csv')
del lol['Address']

path = '#path to directory'
cxn = sqlite3.connect(path + 'db.sqlite3')
cxn.cursor().executescript('drop table if exists lol;')
lol.to_sql('lol', cxn, index = False)
cxn.close()

据我所知,一切都很顺利,但现在我想从数据库中的数据中创建一些下拉菜单。在下面,我包含了一段数据。我要创建的两个下拉列表是 blueTeamTag 和 redTeamTag 下拉列表。我已经尝试了几个小时,但不知道如何做到这一点。

此外,blueTeamTag 和 redTeamTag 都包含重复项,我必须在将其放入下拉列表之前将其删除。

我还包含了我的views.py、models.py 和下拉菜单所在的HTML 脚本。

视图.py:

from django.shortcuts import render
from django.http import HttpResponse, HttpResponseRedirect
from .models import Lol

# Create your views here.
def start(request):
    return render(request, 'start.html')


def uitleg(request):
    return render(request, 'uitleg.html')


def choose_game(request):
    bteams = Lol.blueteamtag
    return render(request, 'choose-game.html', {
        "bteams": bteams
    })

模型.py:

from django.db import models


class Lol(models.Model):
    league = models.TextField(db_column='League', blank=True, null=True)  # Field name made lowercase.
    year = models.IntegerField(db_column='Year', blank=True, null=True)  # Field name made lowercase.
    season = models.TextField(db_column='Season', blank=True, null=True)  # Field name made lowercase.
    type = models.TextField(db_column='Type', blank=True, null=True)  # Field name made lowercase.
    blueteamtag = models.TextField(db_column='blueTeamTag', blank=True, null=True)  # Field name made lowercase.
    bresult = models.IntegerField(db_column='bResult', blank=True, null=True)  # Field name made lowercase.
    rresult = models.IntegerField(db_column='rResult', blank=True, null=True)  # Field name made lowercase.
    redteamtag = models.TextField(db_column='redTeamTag', blank=True, null=True)  # Field name made lowercase.
    gamelength = models.IntegerField(blank=True, null=True)
    golddiff = models.TextField(blank=True, null=True)
    goldblue = models.TextField(blank=True, null=True)
    bkills = models.TextField(db_column='bKills', blank=True, null=True)  # Field name made lowercase.
    btowers = models.TextField(db_column='bTowers', blank=True, null=True)  # Field name made lowercase.
    binhibs = models.TextField(db_column='bInhibs', blank=True, null=True)  # Field name made lowercase.
    bdragons = models.TextField(db_column='bDragons', blank=True, null=True)  # Field name made lowercase.
    bbarons = models.TextField(db_column='bBarons', blank=True, null=True)  # Field name made lowercase.
    bheralds = models.TextField(db_column='bHeralds', blank=True, null=True)  # Field name made lowercase.
    goldred = models.TextField(blank=True, null=True)
    rkills = models.TextField(db_column='rKills', blank=True, null=True)  # Field name made lowercase.
    rtowers = models.TextField(db_column='rTowers', blank=True, null=True)  # Field name made lowercase.
    rinhibs = models.TextField(db_column='rInhibs', blank=True, null=True)  # Field name made lowercase.
    rdragons = models.TextField(db_column='rDragons', blank=True, null=True)  # Field name made lowercase.
    rbarons = models.TextField(db_column='rBarons', blank=True, null=True)  # Field name made lowercase.
    rheralds = models.TextField(db_column='rHeralds', blank=True, null=True)  # Field name made lowercase.
    bluetop = models.TextField(db_column='blueTop', blank=True, null=True)  # Field name made lowercase.
    bluetopchamp = models.TextField(db_column='blueTopChamp', blank=True, null=True)  # Field name made lowercase.
    goldbluetop = models.TextField(db_column='goldblueTop', blank=True, null=True)  # Field name made lowercase.
    bluejungle = models.TextField(db_column='blueJungle', blank=True, null=True)  # Field name made lowercase.
    bluejunglechamp = models.TextField(db_column='blueJungleChamp', blank=True, null=True)  # Field name made lowercase.
    goldbluejungle = models.TextField(db_column='goldblueJungle', blank=True, null=True)  # Field name made lowercase.
    bluemiddle = models.TextField(db_column='blueMiddle', blank=True, null=True)  # Field name made lowercase.
    bluemiddlechamp = models.TextField(db_column='blueMiddleChamp', blank=True, null=True)  # Field name made lowercase.
    goldbluemiddle = models.TextField(db_column='goldblueMiddle', blank=True, null=True)  # Field name made lowercase.
    blueadc = models.TextField(db_column='blueADC', blank=True, null=True)  # Field name made lowercase.
    blueadcchamp = models.TextField(db_column='blueADCChamp', blank=True, null=True)  # Field name made lowercase.
    goldblueadc = models.TextField(db_column='goldblueADC', blank=True, null=True)  # Field name made lowercase.
    bluesupport = models.TextField(db_column='blueSupport', blank=True, null=True)  # Field name made lowercase.
    bluesupportchamp = models.TextField(db_column='blueSupportChamp', blank=True, null=True)  # Field name made lowercase.
    goldbluesupport = models.TextField(db_column='goldblueSupport', blank=True, null=True)  # Field name made lowercase.
    bluebans = models.TextField(db_column='blueBans', blank=True, null=True)  # Field name made lowercase.
    redtop = models.TextField(db_column='redTop', blank=True, null=True)  # Field name made lowercase.
    redtopchamp = models.TextField(db_column='redTopChamp', blank=True, null=True)  # Field name made lowercase.
    goldredtop = models.TextField(db_column='goldredTop', blank=True, null=True)  # Field name made lowercase.
    redjungle = models.TextField(db_column='redJungle', blank=True, null=True)  # Field name made lowercase.
    redjunglechamp = models.TextField(db_column='redJungleChamp', blank=True, null=True)  # Field name made lowercase.
    goldredjungle = models.TextField(db_column='goldredJungle', blank=True, null=True)  # Field name made lowercase.
    redmiddle = models.TextField(db_column='redMiddle', blank=True, null=True)  # Field name made lowercase.
    redmiddlechamp = models.TextField(db_column='redMiddleChamp', blank=True, null=True)  # Field name made lowercase.
    goldredmiddle = models.TextField(db_column='goldredMiddle', blank=True, null=True)  # Field name made lowercase.
    redadc = models.TextField(db_column='redADC', blank=True, null=True)  # Field name made lowercase.
    redadcchamp = models.TextField(db_column='redADCChamp', blank=True, null=True)  # Field name made lowercase.
    goldredadc = models.TextField(db_column='goldredADC', blank=True, null=True)  # Field name made lowercase.
    redsupport = models.TextField(db_column='redSupport', blank=True, null=True)  # Field name made lowercase.
    redsupportchamp = models.TextField(db_column='redSupportChamp', blank=True, null=True)  # Field name made lowercase.
    goldredsupport = models.TextField(db_column='goldredSupport', blank=True, null=True)  # Field name made lowercase.
    redbans = models.TextField(db_column='redBans', blank=True, null=True)  # Field name made lowercase.

    class Meta:
        managed = False
        db_table = 'lol'

选择game.html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>

{#Hier moet de gebruiker een game kiezen#}
<select name="bTeam" class="form-control">
    {% for results in bteams %}
    <option value="{{ results.id }}">{{ results.name }}</option>
    {% endfor %}
</select>


</body>
</html>

这是数据的一个片段。 我只需要 blueTeamTag 和 redTeamTag

提前致谢!

标签: pythondjangosqlite

解决方案


推荐阅读