2016-04-30 13 views
0

チームには名前があります。プレーヤーはチームに属し、プレーヤーは速度と国籍も持っています。結果は高速度のプレーヤーの数を返し、必要な速度を満たさない場合は国籍を記録します。ビューから1列に複数の文字を戻す

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 

チームごとに複数の国籍が返されています。いくつのファストプレイヤーが簡単かを知るには、上で定義した増分値を使用します。しかし、チーム内のすべてのシングルプレイヤーのチャーとなる国籍を見つけることは容易ではないようです。

私は、これがために苦労し

details = details() 
details.nationality=nationalitylist 

を実行して詳細に渡すことができ

)それは細部=細部を(実行して返すことができ、リストに

 nationalitylist = list[] and then doing 

    else nationality = player.nationality 

を定義すると思いましたチームごとに各プレーヤーの国籍を渡す方法を見つけます。私はこれがとても簡単だと思っていました。

+0

あなたが達成しようとしていることを正確に理解することが困難でした。あなたは、速度が5以下のプレイヤーを持つすべての国籍のリストを生成しようとしていますか? – Del

+0

正解:)チームごとの複数の国籍をdbに返す方法を知ることは難しいと思っています。だから、elseステートメント –

答えて

0

さて、私はあなたにこれを手伝ってくれたつもりです。この問題の私の理解は、5以下のスピードを持つ選手を持つすべての国籍のリストを取得したいということです。

最初に、国籍の空リストを定義して、すべてのプレイヤーを繰り返して速度をチェックします。スピードが5以下の場合は、国籍リストに追加します。

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

これは私たちと同じ国籍の複数の遅いプレイヤーが存在する場合、5未満がスピードを持つプレーヤーを持っているすべての国籍のリストが表示されます、その国籍はあなたのリストに複数回表示されます。 。

国籍がリストに1回しか表示されないようにするには、次のコマンドを使用してリストをセットにしてリストに戻します。重複したエントリは削除されます。

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) 
関連する問題