2017-02-24 10 views
0

私は様々な登りをカタログ化するウェブサイトを持っています。これらの登り勾配は、それらに関連付けられた等級の難しいものであり、非整数値です。ユーザーは、選択した登山のレビューを提出し、自分の難易度を提案することもできます。私は、これらの問題に整数値を割り当て、平均化してから結果を出力することができるようにしたいと考えています。非整数フィールドに整数値を代入するDjangoモデル

たとえば、評価システムが5.1,5.2,5.3 ... 5.9,5.10,5.10a、5.10bなどになる場合、これらのフィールドのそれぞれに整数値を割り当てて平均化できるようにするには後で?

class Climb(models.Model): 
    GRADES = (
     ('5.15', '5.15'), 
     ('5.14', '5.14'), 
     ... (more difficulties here) 
     ('5.1', '5.1'), 
    ) 
    name = models.CharField(max_length=255, unique=True) 
    grade = models.CharField(max_length=255, choices=GRADES) 
    date = models.DateTimeField(auto_now_add=True) 
    def __str__(self): 
     return "%s %s" % (self.name, self.grade) 

私は次のことを試してみました:

class Climb(models.Model): 
    GRADES = (
     ('20', '5.15a'), 
     ('19', '5.14d'), 
     ('18', '5.14c'), 
     ... 
     ('1', '5.1'), 
    ) 

しかし、私は使い方が登山を選択することができます別のフォームを持っているので、後で問題に走った、と登るがclimb_gradeがある「Climb_nameのclimb_grade」として、理想的に表示されるはずです「5.15a」または「5.9」などとは異なり、代わりに「20」または「10」またはその困難に付随した整数を表示していました。

アイデア?

答えて

1

あなたのナンバリングシステムがうまく機能していて、ユーザーが登りの適切な等級を見ないと心配している場合、Djangoはテンプレートに表示するための気の利いた小さなヘルパーを持っています。うまくいけば、これはあなたが探しているものです!

フォーム: ClimbForm.get_grade_display()

テンプレート:それはトリックを行うだろうよう {{ climb.get_grade_display }}

+0

これがそうです!しかしそれを実装するのに問題があります。トラブルシューティングを手伝ってもらえますか?ユーザーが登山のレビューを提出する形式で、登山を選択すると、モデルから__str__フィールドが呼び出されます。したがって、表示は "Self.name、self.grade"で、整数値を示します。 self.grade_displayに変更しようとしましたが、動作しませんでした(grade_display属性を返しません)。 – Josh

+0

Nevermindは、 '%s%s'%(self.name、self.get_grade_display())に変更しました。ありがとうございました!! – Josh

+0

申し訳ありません私はあなたのコメントを以前に見ていない、うれしいあなたがそれを考え出した! – cpett

関連する問題