2017-04-03 6 views
-1

私はクライアントの番号を管理パネルの中のパーセント値に変換したいので、最大浮動小数点数は最大5.0までですので、彼は5つの星を持っていますし、好きでなければ0.0を教えてください設立されました。好きな数をパーセントに変換する方法、フラスコ?

平均評価:4.5

doesnの」率は、たとえば次のようなルックスになります管理パネルの内側

appointment_upvotes = db.Table('appointment_upvotes', 
    db.Column('appointment_id', db.Integer, db.ForeignKey('appointment.id')), 
    db.Column('rate_appo_id', db.Integer, db.ForeignKey('rate_appo.id')) 
) 

class Appointment(db.Model): 
    id = db.Column(db.Integer(), primary_key=True) 
    start_time = db.Column(db.Integer(), nullable=False) 
    end_time = db.Column(db.Integer(), nullable=False) 
    timezone = db.Column(db.String(TIMEZONE_LEN_MAX), nullable=False) 
    note = db.Column(db.String()) 
    status = db.Column(db.Boolean(), default=False) 

    is_accepted = db.Column(db.Boolean(), default=False) 
    is_not_accepted = db.Column(db.Boolean(), default=True) 

    client_id = db.Column(db.Integer(), db.ForeignKey('client.id')) 
    user_id = db.Column(db.Integer(), db.ForeignKey('user.id')) 
    service_id = db.Column(db.Integer(), db.ForeignKey('service.id')) 

    rates = db.relationship('RateAppo', backref='appointment', lazy='dynamic') 

class RateAppo(db.Model): 
    id = db.Column(db.Integer(), primary_key=True) 
    rate_punctuality = db.Column(db.Integer(), default=0) 
    rate_nonconf = db.Column(db.Integer(), default=0) 
    rate_solvency = db.Column(db.Integer(), default=0) 
    text = db.Column(db.Text(), default=None) 

    appo_id = db.Column(db.Integer(), db.ForeignKey('appointment.id')) 

    def __repr__(self): 
     return "Comment: {}".format(self.text)[0:15] 

    def has_voted(self, appointment_id): 
     select_votes = appointment_upvotes.select(
       db.and_(
        appointment_upvotes.c.appointment_id == appointment_id, 
        appointment_upvotes.c.rate_appo_id == self.id 
       ) 
     ) 
     rs = db.engine.execute(select_votes) 
     return False if rs.rowcount == 0 else True 

    def vote(self, appointment_id, typevote): 
     already_voted = self.has_voted(appointment_id) 
     vote_status = None 
     if not already_voted: 
      if typevote == 'rate_punctuality': 
       db.engine.execute(
       appointment_upvotes.insert(), 
        appointment_id = appointment_id, 
        rate_appo_id = self.id 
       ) 
       self.rate_punctuality = self.rate_punctuality + 1 
       vote_status = True 
      elif typevote == 'rate_nonconf': 
       db.engine.execute(
       appointment_upvotes.insert(), 
        appointment_id = appointment_id, 
        rate_appo_id = self.id 
       ) 
       self.rate_nonconf = self.rate_nonconf + 1 
       vote_status = True 
      else: 
       db.engine.execute(
       appointment_upvotes.insert(), 
        appointment_id = appointment_id, 
        rate_appo_id = self.id 
       ) 
       self.rate_solvency = self.rate_solvency + 1 
       vote_status = True 
     db.session.commit() 
     return vote_status 

:ここ

は私のmodel.pyです彼がどれだけ好きになったのか、彼は100人の好きな人がいると言いますが、カウントで表示したくないだけで、値をマークにする必要があります5.0

私の言いたいことを忘れた別の事は、おそらく私のjinjaテンプレートの中で私はそれを動作させることができますか?ここで

は一例です:

時間厳守:100パーセントでが好き多分それは、4.52

なりソルベンシー:63%で、それは多分3.23

ようになります接頭辞 4つ星があり、ソルベンシーは3星などとなります。私は入力することができます私のテンプレートの内側だから

​​

最後の事は私のパネル内部に例えば私はこのような何かを得るでしょう、フル統計一行内のすべてのこれらの同類のを示すことですこのような何か:私は上記の入力した内容の

<div class="col-sm-8"><h2>Average Rating: <strong> {{ "%.2f" % user.rate_appo.count }} </strong></h2> 
    <div class="table-responsive"> 
    <table class="table table-striped text-center"> 
     <thead> 
     <tr> 
      <th class="text-center">Punctuality</th> 
      <th class="text-center">Non-Conflict</th> 
      <th class="text-center">Solvency</th> 



     </tr> 
     </thead> 
     <tbody> 
     <tr> 
      <td>{{ "%.2f" % user.rate_appo.rate_punctuality.count}} </td> 
      <td>{{ "%.2f" % user.rate_appo.rate_nonconf.count}} </td> 
      <td>{{ "%.2f" % user.rate_appo.rate_solvency.count}} </td> 


     </tr> 



     </tbody> 
    </table> 
</div> 

アム本当にわからないが、私はちょうど試験を簡素化するために .2f %を使用しました皆さんのためにもっと明確になるようにしてください。

最終的には、そのプロジェクトで働いていて、どんな提案もお寄せください:)。

答えて

0

あなたのモデルで「好きな数」がわかりませんでしたが、あなたの問題は「数字をフラスコの別の形式に変換しています - 管理パネル」と思います。

もしそうなら、これは役立つかもしれない:

An exampleのカスタムフォーム - フラスコ-管理を。カスタマイズされたモデルビューを使用してファイルパスをHTMLタグ<img>に変換しました。ここ

は、キーコードです:convertLikes(100)は4.52を返します。

https://github.com/flask-admin/flask-admin/blob/master/examples/forms/app.py#L110

EDIT:よう

convertLikesという名前のPythonの関数は変換できがあると仮定は、星の数に番号が好き。そして、Jinja2のフィルタのようにそれを定義し、あなたのコードに置き換えますconvertLikes(user.rate_appo.rate_punctuality.count)を起動し、<td>タグに星の数を返します

<td>{{ user.rate_appo.rate_punctuality.count | convertLikes }} </td> 

フィルタ構文:で

<td>{{ "%.2f" % user.rate_appo.rate_punctuality.count}} </td> 

を。例えば

はPythonでフィルタ機能を定義します。

def convertLikes(count): 
    # do the convertion 
    return stars_number 

は、テンプレートの環境でそれを登録します。

app = Flask(__name__) 
app.jinja_env.filters['convertLikes'] = convertLikes 

はJinja2のテンプレートで使用してください:

<td>{{ user.rate_appo.rate_punctuality.count | convertLikes }} </td> 
+0

まず、thaあなたの興味のためにnks。 私はあなたが提供したもので任意のタイプのデータを変換したくないだけです。数字だけではなくパーセントで私のクライアントの好きな番号を表示したいのですが、私のケースではちょうど最高です。5.0 – reznov11

+0

私は編集しますそれはより明確になります:)。 – reznov11

+0

jinja2テンプレートを変更できる場合は、** jinja2カスタムフィルタ**を使用してジョブを実行できます。 http://jinja.pocoo.org/docs/2.9/api/#custom-filters –

関連する問題