2016-04-30 52 views
0

一个团队有一个名字。一名球员属于一支球队,一名球员也有速度和国籍。结果会以高速度返回玩家数量,如果他们不符合所要求的速度,他们的国籍将被记录下来。从视图返回一列中的多个字符

models 

team -> name 

player -> belongsto(foreign key to team),speed, nationality 

Details -> fastspeed, nationality, team(foreign key to team) 

view.py 

speed = 5 

loop through all the players in a team 
if player.speed > 5 
    speed += 1 
else 
    player.nationality 

详细信息应返回速度超过5的玩家数量并返回该团队中所有玩家的国籍。

 team number  fastspeed| nationalities 
    ---------- -------------- -------------- 
     1    5  American 
            French 
            British 
    ---------------------------------------- 
     2    3   German 
            Australian 

每个团队都会返回多个国籍。发现有多少快速玩家很容易,我们只是使用我们上面定义的增量值。但是找出一支队伍中每个球员的国籍,似乎并不容易。

我想定义列表

 nationalitylist = list[] and then doing 

    else nationality = player.nationality 

那么它可以通过执行细节返回=细节()

那么这可以通过做

details = details() 
details.nationality=nationalitylist 

挣扎传递细节了解如何通过每个球员的每个球员的国籍。我期待这很容易。

+0

我发现很难完全理解你正在努力完成什么。你只是试图制作一个所有拥有速度等于或低于5的玩家的国籍清单? – Del

+0

正确:)因此,我发现很难知道如何将每个团队的多个国家返回到数据库..所以else语句 –

回答

0

好的,我要借此帮助你。我对这个问题的理解是,你希望得到一个所有拥有速度为5或以下球员的国籍的名单。

首先我们定义一个空白的国籍列表,然后遍历所有玩家检查他们的速度。如果他们的速度是5或以下,我们将它们添加到国籍列表中。

nationalities = [] 
if player.speed > 5: 
    speed +1 
else: 
    nationalities.append(player.nationality) 

这将使我们有速度玩家小于5。但是,如果有同一国籍的多个慢玩家各民族的名单,那么将国籍您的列表中出现多次。

如果您只希望该国籍在您的列表中显示一次,那么我们可以使用以下命令将列表变为一个集合,然后回到列表中。这将删除任何重复的条目。

nationalities = list(set(nationalities)) 

将此列表存储在数据库中将取决于您使用的是哪个版本的Django和哪个数据库。

如果您使用的是PostgreSQL,那么您可以访问数组字段,这将允许您直接存储您的列表。 (https://docs.djangoproject.com/en/1.9/ref/contrib/postgres/fields/#arrayfield

否则,您可能需要考虑将列表转储到json,然后您可以将其存储为CharField或TextField。

import json 
json_nationalities = json.dumps(nationalities)