Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.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模型从多个表中获取记录?_Python_Mysql_Django_Join_Django Models - Fatal编程技术网

Python 如何编写Django模型从多个表中获取记录?

Python 如何编写Django模型从多个表中获取记录?,python,mysql,django,join,django-models,Python,Mysql,Django,Join,Django Models,如何使用Django模型编写此查询 class Game(models.Model): total_players = models.IntegerField(max_length=10) created_on = models.DateTimeField(auto_now_add=True) updated_on = models.DateTimeField(auto_now=True) class Players(models.Model): game =

如何使用Django模型编写此查询

class Game(models.Model):
    total_players = models.IntegerField(max_length=10)
    created_on = models.DateTimeField(auto_now_add=True)
    updated_on = models.DateTimeField(auto_now=True)

class Players(models.Model):
    game = models.ForeignKey(Game, related_name='players')
    name = models.CharField(max_length=10, verbose_name="Player Name")
    created_on = models.DateTimeField(auto_now_add=True)
    updated_on = models.DateTimeField(auto_now=True)

class Score(models.Model):
    game = models.ForeignKey(Game)
    name = models.ForeignKey(Players, related_name='scores')
    score = models.IntegerField(max_length=10)
    created_on = models.DateTimeField(auto_now_add=True)
    updated_on = models.DateTimeField(auto_now=True)

非常感谢您事先的帮助

我想试试这个,但我不确定它是否能将分数适当地过滤到每个球员的分数上。我不认为你的关系是完全正常的-如果
玩家的
分数
是多对一,而
玩家的
游戏的
是多对一,你通常不会作为
分数
上的独立FK跟踪
游戏。每个
玩家
行是否真的只存在于一个游戏中

select p.name, sum(s.score) as total_score
from game g, players p, score s
where g.id=17 and  g.id = p.game_id and p.id = s.name_id
group by p.name 

是的,我知道我们的关系还没有完全正常化。对于这个数据库结构,每个玩家只存在于单个游戏中,我正在学习django模型和其他东西,所以我从1NF/2NF开始。这个查询至少对你有用吗?规范化通常是一个好主意,但只要您考虑到在没有规范化的情况下可能引入的歧义,就没有严格的必要。
from django.db.models import Sum
Game.objects.filter(id=17).values(players__name).annotate(total_score=Sum(players__scores_score))