Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/69.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 SQL DB中使用FKs存储dict类型对象的可变长度列表_Python_Sql_Django - Fatal编程技术网

Python 如何在Django SQL DB中使用FKs存储dict类型对象的可变长度列表

Python 如何在Django SQL DB中使用FKs存储dict类型对象的可变长度列表,python,sql,django,Python,Sql,Django,假设我得到一些JSON格式的 "fellowPlayers": [ { "championId": 110, "teamId": 100, "summonerId": 34258805 }, { "championId": 9, "teamId": 200,

假设我得到一些JSON格式的

"fellowPlayers": [
            {
               "championId": 110,
               "teamId": 100,
               "summonerId": 34258805
            },
            {
               "championId": 9,
               "teamId": 200,
               "summonerId": 19923759
            },
           ...
]
…可以有一个变量#的条目,但始终是这3个属性,其中2个应该映射到其他表(championId和calleerid),我想如何在Django中定义一个表/模型来实现这一点

如果不能直接做到这一点,您建议如何处理这种情况?我最初的想法是根据我预期的最大条目数(大约11条)在一系列字段中进行硬编码,但这种方法似乎可以改进很多,尽管11条在硬编码方面并不太糟糕

澄清一下,并给出更多的背景:我有一个模型,可以跟踪游戏中的历史比赛数据。这包括大量特定于比赛的详细信息,如获得的积分、杀戮等。
championId
courderid
分别指比赛中使用的游戏内角色和比赛中使用该角色的玩家。团队id(全局常量)只有两个可能的值,这些值不会与任何其他表相关
championId
courgerid
将分别与跟踪冠军和球员的表格相关

我遇到的问题在于模型(我们称之为存储单个比赛统计数据的
比赛历史
模型)实际上“包含”了
同伴玩家的列表
,因为游戏中可以有一个变量#玩家,从1到12。因此,对于任何给定的比赛,我都可以得到一系列已知大小的比赛统计数据,这些数据可以很好地处理,但考虑到未知的球员,以及将他们的信息与此模型关联时,我不知道如何组织这些数据

我在寻找这个问题的解决方案时偶然发现了这个问题,看起来我尝试做的事情实际上不受SQL的支持,因为它类似于在SQL中存储可变长度的列表。也许有人可以详细说明这种“不兼容”,这样我就可以确定它是否适用于我正在做的事情

如果需要更多信息,请发表评论。

这是一个很好的例子

然后你会用背景词进行查询。例:

# select all the fellow players objects who belong to other model with pk=1
FellowPlayer.objects.filter(match_history__pk=1)

您可以在该链接中找到更多示例。

您可以添加一点吗?按照我的理解,您将以某种方式收到JSON响应,并且希望自动将其解压缩并存储?如果正确,下面答案中的通用模型设置是否正确?i、 你会有一个同伴,同时拥有冠军和召唤师的外国钥匙?我想我理解你的要求,但我只是想确保我的模型部分是正确的。事实证明,这比我预期的更难沟通。我已经修改了我的帖子以包含更多的信息。我已经修改了OP,希望能更好地传达我正在尝试做的事情。我真的很感激你的努力:)我会尽量用这种方式来组织事情,如果用这种方式使用数据库是有意义的,我会接受。我再次更新了我的答案。这是在Django做这件事的方法。你有一个比赛历史记录,其中可以包含更多的队友。这是一对多的关系。这些查询都是用背景词进行的。我很肯定你能用这个解决方案得到预期的结果。
# select all the fellow players objects who belong to other model with pk=1
FellowPlayer.objects.filter(match_history__pk=1)