Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django mysql数据库在模板问题中的for循环中显示来自多个表的数据_Python_Mysql_Django_Django Models_Django Templates - Fatal编程技术网

Python Django mysql数据库在模板问题中的for循环中显示来自多个表的数据

Python Django mysql数据库在模板问题中的for循环中显示来自多个表的数据,python,mysql,django,django-models,django-templates,Python,Mysql,Django,Django Models,Django Templates,我有一个老联盟网站的php脚本与mysql数据库从2006年。此脚本不运行取决于旧的php和mysql版本。这就是为什么我试图使用django从mysql数据库获取数据,但我在匹配列表页面上遇到了问题 在数据库中有一个联赛表格。我可以使用django模板系统获取数据和列表,如下所示: class LeagueMatch(models.Model): objects = None idm = models.AutoField(primary_key=True) league = models.In

我有一个老联盟网站的php脚本与mysql数据库从2006年。此脚本不运行取决于旧的php和mysql版本。这就是为什么我试图使用django从mysql数据库获取数据,但我在匹配列表页面上遇到了问题

在数据库中有一个联赛表格。我可以使用django模板系统获取数据和列表,如下所示:

class LeagueMatch(models.Model):
objects = None
idm = models.AutoField(primary_key=True)
league = models.IntegerField()
ids = models.PositiveIntegerField()
judge = models.PositiveIntegerField()
date = models.IntegerField()
idg = models.PositiveIntegerField(blank=True, null=True)
pos = models.IntegerField(blank=True, null=True)
rnd = models.PositiveIntegerField(blank=True, null=True)
idc1 = models.ForeignKey(LeagueClan, on_delete=models.CASCADE, related_name='teama')
idc2 = models.ForeignKey(LeagueClan, on_delete=models.CASCADE, related_name='teamb')
type = models.CharField(max_length=20, blank=True, null=True)
idpt = models.PositiveSmallIntegerField()
points1 = models.IntegerField()
points2 = models.IntegerField()
frags1 = models.SmallIntegerField()
frags2 = models.SmallIntegerField()
win1 = models.PositiveIntegerField()
draw = models.PositiveIntegerField()
win2 = models.PositiveIntegerField()
maps = models.CharField(max_length=70)
scores = models.CharField(max_length=70)
descr = models.TextField()
server = models.CharField(max_length=30)
型号.py

 class LeagueMatch(models.Model):
objects = None
idm = models.AutoField(primary_key=True)
league = models.IntegerField()
ids = models.PositiveIntegerField()
judge = models.PositiveIntegerField()
date = models.IntegerField()
idg = models.PositiveIntegerField(blank=True, null=True)
pos = models.IntegerField(blank=True, null=True)
rnd = models.PositiveIntegerField(blank=True, null=True)
idc1 = models.IntegerField()
idc2 = models.IntegerField()
type = models.CharField(max_length=20, blank=True, null=True)
idpt = models.PositiveSmallIntegerField()
points1 = models.IntegerField()
points2 = models.IntegerField()
frags1 = models.SmallIntegerField()
frags2 = models.SmallIntegerField()
win1 = models.PositiveIntegerField()
draw = models.PositiveIntegerField()
win2 = models.PositiveIntegerField()
maps = models.CharField(max_length=70)
scores = models.CharField(max_length=70)
descr = models.TextField()
server = models.CharField(max_length=30)
def all_matches(request):
match_list = LeagueMatch.objects.all()
return render(request, 'home_match.html',
              {'match_list': match_list})

{% for match in match_list reversed %}
{% if match.league == 1 %}
        <div class="card" >
              <div class="card-body">
                 <h5 class="card-title"><a href="{% url 'match-detail' match.pk %}"> Match  No {{ match.idm }} - Team A ({{ match.idc1 }}) vs Team B ({{ match.idc2 }})</a></h5>
                <p class="card-text"><b>Score : {{ match.win1 }} : {{ match.win2 }}</b></p>
              </div>
        </div>
        </br></br>
{% endif %}
视图.py

 class LeagueMatch(models.Model):
objects = None
idm = models.AutoField(primary_key=True)
league = models.IntegerField()
ids = models.PositiveIntegerField()
judge = models.PositiveIntegerField()
date = models.IntegerField()
idg = models.PositiveIntegerField(blank=True, null=True)
pos = models.IntegerField(blank=True, null=True)
rnd = models.PositiveIntegerField(blank=True, null=True)
idc1 = models.IntegerField()
idc2 = models.IntegerField()
type = models.CharField(max_length=20, blank=True, null=True)
idpt = models.PositiveSmallIntegerField()
points1 = models.IntegerField()
points2 = models.IntegerField()
frags1 = models.SmallIntegerField()
frags2 = models.SmallIntegerField()
win1 = models.PositiveIntegerField()
draw = models.PositiveIntegerField()
win2 = models.PositiveIntegerField()
maps = models.CharField(max_length=70)
scores = models.CharField(max_length=70)
descr = models.TextField()
server = models.CharField(max_length=30)
def all_matches(request):
match_list = LeagueMatch.objects.all()
return render(request, 'home_match.html',
              {'match_list': match_list})

{% for match in match_list reversed %}
{% if match.league == 1 %}
        <div class="card" >
              <div class="card-body">
                 <h5 class="card-title"><a href="{% url 'match-detail' match.pk %}"> Match  No {{ match.idm }} - Team A ({{ match.idc1 }}) vs Team B ({{ match.idc2 }})</a></h5>
                <p class="card-text"><b>Score : {{ match.win1 }} : {{ match.win2 }}</b></p>
              </div>
        </div>
        </br></br>
{% endif %}
这是可以的,但球队名称不在同一张表中(联赛),只有球队编号(idc1和idc2)。球队名称存储在另一个表中,名称为league_clan。我想显示所有匹配项列表,如下所示:

class LeagueMatch(models.Model):
objects = None
idm = models.AutoField(primary_key=True)
league = models.IntegerField()
ids = models.PositiveIntegerField()
judge = models.PositiveIntegerField()
date = models.IntegerField()
idg = models.PositiveIntegerField(blank=True, null=True)
pos = models.IntegerField(blank=True, null=True)
rnd = models.PositiveIntegerField(blank=True, null=True)
idc1 = models.ForeignKey(LeagueClan, on_delete=models.CASCADE, related_name='teama')
idc2 = models.ForeignKey(LeagueClan, on_delete=models.CASCADE, related_name='teamb')
type = models.CharField(max_length=20, blank=True, null=True)
idpt = models.PositiveSmallIntegerField()
points1 = models.IntegerField()
points2 = models.IntegerField()
frags1 = models.SmallIntegerField()
frags2 = models.SmallIntegerField()
win1 = models.PositiveIntegerField()
draw = models.PositiveIntegerField()
win2 = models.PositiveIntegerField()
maps = models.CharField(max_length=70)
scores = models.CharField(max_length=70)
descr = models.TextField()
server = models.CharField(max_length=30)
我的意思是idc1==9,我们将从另一个表中获取数据,9号团队的名称和显示。如何为此显示器编写模型或模板代码?在{%for%}代码中我无法做到这一点。出了点问题,需要帮助。我希望你能解释一下,谢谢


将idc1和idc2从integerfield转换为ForeignKey field,然后您可以通过{match.idc1.name}获得名称,如果速度变慢,您可以使用select_related。

您好,谢谢,但出现如下错误:

class LeagueMatch(models.Model):
objects = None
idm = models.AutoField(primary_key=True)
league = models.IntegerField()
ids = models.PositiveIntegerField()
judge = models.PositiveIntegerField()
date = models.IntegerField()
idg = models.PositiveIntegerField(blank=True, null=True)
pos = models.IntegerField(blank=True, null=True)
rnd = models.PositiveIntegerField(blank=True, null=True)
idc1 = models.ForeignKey(LeagueClan, on_delete=models.CASCADE, related_name='teama')
idc2 = models.ForeignKey(LeagueClan, on_delete=models.CASCADE, related_name='teamb')
type = models.CharField(max_length=20, blank=True, null=True)
idpt = models.PositiveSmallIntegerField()
points1 = models.IntegerField()
points2 = models.IntegerField()
frags1 = models.SmallIntegerField()
frags2 = models.SmallIntegerField()
win1 = models.PositiveIntegerField()
draw = models.PositiveIntegerField()
win2 = models.PositiveIntegerField()
maps = models.CharField(max_length=70)
scores = models.CharField(max_length=70)
descr = models.TextField()
server = models.CharField(max_length=30)
在/匹配处出现操作错误/

(1054,“字段列表”中的未知列'league_match.idc1_id')

请求方法:获取 请求URL:http://localhost:8000/matches/ Django版本:3.2.2 异常类型:操作错误 异常值:

(1054,“字段列表”中的未知列'league_match.idc1_id')

异常位置:/home/tolga/.local/lib/python3.8/site-packages/MySQLdb/connections.py,查询中的第259行 Python可执行文件:/usr/bin/python3 Python版本:3.8.5 Python路径:

['/home/tolga/q2ligi2006', “/usr/lib/python38.zip”, “/usr/lib/python3.8”, “/usr/lib/python3.8/lib dynload”, “/home/tolga/.local/lib/python3.8/site packages”, “/usr/local/lib/python3.8/dist包”, “/usr/lib/python3/dist包”]

服务器时间:2021年6月3日星期四09:16:13+0000

我使用ForeignKey字段更新了模型,如下所示:

class LeagueMatch(models.Model):
objects = None
idm = models.AutoField(primary_key=True)
league = models.IntegerField()
ids = models.PositiveIntegerField()
judge = models.PositiveIntegerField()
date = models.IntegerField()
idg = models.PositiveIntegerField(blank=True, null=True)
pos = models.IntegerField(blank=True, null=True)
rnd = models.PositiveIntegerField(blank=True, null=True)
idc1 = models.ForeignKey(LeagueClan, on_delete=models.CASCADE, related_name='teama')
idc2 = models.ForeignKey(LeagueClan, on_delete=models.CASCADE, related_name='teamb')
type = models.CharField(max_length=20, blank=True, null=True)
idpt = models.PositiveSmallIntegerField()
points1 = models.IntegerField()
points2 = models.IntegerField()
frags1 = models.SmallIntegerField()
frags2 = models.SmallIntegerField()
win1 = models.PositiveIntegerField()
draw = models.PositiveIntegerField()
win2 = models.PositiveIntegerField()
maps = models.CharField(max_length=70)
scores = models.CharField(max_length=70)
descr = models.TextField()
server = models.CharField(max_length=30)
怎么了,谢谢