J'ai un petit problème, qui est, je veux convertir le nombre de clients aime à un pourcentage dans le panneau d'administration, le nombre maximum de float est jusqu'à 5.0 donc il a obtenu le 5 étoiles et baisse dire 0.0 a été fondée.Comment convertir les likes nombre en pourcent, Flask?
Voici mon model.py:
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
A l'intérieur du panneau d'administration, le taux sera ressemble à ceci par exemple:
Note moyenne: 4.5
n » Peu importe le nombre de likes qu'il a, disons qu'il a obtenu 100 likes, je ne veux pas les montrer en nombre, juste besoin d'obtenir la valeur jusqu'aux marques 5.0
Une autre chose que j'ai oublié de mentionner, peut-être dans mon modèle jinja
je peux le faire fonctionner ??
Voici un exemple:
Ponctualité: 100 aime en pour cent peut-être sera 4,52
Solvabilité: 63 en pour cent, il sera peut-être 3,23
donc dans Ponctualité il y aura 4 étoiles, et en Solvabilité sera 3 étoiles et ainsi de suite.
La dernière chose est de montrer une statistiques complètes de tous ces gens dans une ligne, par exemple dans mon panneau je vais obtenir quelque chose comme ceci:
donc dans mes modèles je peux taper quelque chose comme ceci:
<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>
suis vraiment pas sûr de ce que je tapais ci-dessus, j'ai utilisé le % .2f juste pour simplifier l'examen pour être plus clair pour vous tous.
Finalement, c'est un projet qui fonctionne et s'il vous plaît toutes les suggestions serait tonnes apprécié :).
Tout d'abord, tha nks pour votre intérêt. Je ne veux pas convertir n'importe quel type de données par ce que vous avez offert, je veux juste montrer le nombre de mon client comme je l'ai mentionné ci-dessus pas par des chiffres mais par pourcentage dans mon cas juste jusqu'à – reznov11
question donc ce sera plus clair :). – reznov11
Si vous pouvez modifier le modèle jinja2, ** les filtres personnalisés jinja2 ** peuvent faire l'affaire. http://jinja.pocoo.org/docs/2.9/api/#custom-filters –