Bonjour,
Un collègue m'a donné un bon de code que j'utilise depuis un moment.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
|
sql = context.select_publications_all_by_user
result = sql(owner=int(publication_user))
out_tmpl = """<tr><td style="border-bottom:1px dashed #cccccc;"><img style="margin-top:8px;" src="../../img/arrow-small-right.gif" /></td><td style="border-bottom:1px dashed #cccccc; padding:5px 0px 5px 0px;"><span><b>%s</b></span>, <span>%s</span>, <span>%s</span>, <span>%s</span></td></tr>
"""
dicts = result.dictionaries()
if not len(dicts):
return "The selected collaborator has no entries corresponding at the desired category"
out = []
for item in result.dictionaries():
out.append(out_tmpl %(item['team'], item['years'], item['title'],item['ref']))
return """<table class="tb_publications" cellpadding="3" cellspacing="0">%s</table>""" %"\n".join(out)
# |
Le problème dans ce code, c'est que si le champs team, years ou title, de ma base de donnée sont vide, il affichera la virgule, qui sont soulignée, dans le code ci-dessu.
Alors je dois trouver une solution pour la virgule qui précede un des item[''] ne s'affiche pas si se derniere champs est vide dans la base de donné.
On m'a donc proposé ce code, mais je me casse la tete a le faire fonctionner ca je sais qu'il y a un binz au niveau de (out_tmpl %(x,y,z,", ".join(cells)))
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| sql = context.select_publications_all_by_user
result = sql(owner=int(publication_user))
out_tmpl = """<tr><td style="border-bottom:1px dashed #cccccc;"><img style="margin-top:8px;" src="../../img/arrow-small-right.gif" /></td>
<td style="border-bottom:1px dashed #cccccc; padding:5px 0px 5px 0px;"><span><b>%s</b></span> %s %s %s</td>
</tr>"""
field_names = ['fd_team','fd_years', 'fd_title', 'fd_ref',] # and other field names, just an example
rows = []
for item in result.dictionaries():
cells = []
for field_name in field_names:
value = item.get(field_name, '')
if value:
cells.append("<span>%s</span>" %value)
rows.append(out_tmpl %(x,y,z,", ".join(cells))) # just an example, fill in the correct values for x,y and z
return """<table class="tb_publications" cellpadding="3" cellspacing="0">%s</table>""" %"".join(rows) |
A la place de (out_tmpl %(x,y,z,", ".join(cells))) , j'ai essayé
(out_tmpl %(fd_team,fd_years,fd_title,fd_ref,", ".join(cells)))
et
(out_tmpl %(%s,%s,%s,%s,", ".join(cells)))
Mais sans succès :o(
Arrivez vous voir mes erreur, corriger mon code?
Avez vous mieux a me proposer
Milles merci, je suis un super debutant en Python
Partager