【问题标题】:Returning multiple characters in one column from view从视图中返回一列中的多个字符
【发布时间】:2016-04-30 22:47:08
【问题描述】:

一个团队有一个名字。一个球员属于一个球队,一个球员也有速度和国籍。结果返回超高速玩家的数量,如果他们没有达到要求的速度,他们的国籍就会被记录下来。

 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 = details() 
 details.nationality=nationalitylist 

努力找出如何通过每支球队的每个球员的国籍。我期待这很容易。

【问题讨论】:

  • 我发现很难准确理解您要完成的工作。您是否只是想生成所有国家/地区的玩家速度为 5 或以下的列表?
  • 正确 :) 所以我发现很难知道如何将每个团队的多个国籍返回到数据库.. 所以 else 声明

标签: python django


【解决方案1】:

好的,我会尽力帮助您解决这个问题。我对这个问题的理解是,您希望获得所有国家/地区的玩家速度为 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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-09
    • 1970-01-01
    • 1970-01-01
    • 2018-10-29
    相关资源
    最近更新 更多