/ / Je veux changer la valeur en utilisant for for loop - python, django

Je veux changer la valeur en utilisant for loop - python, django

salut les gars, j'ai vraiment des problèmes avec mes codes. mes codes sont comme ça.

{% for activity in activityDoneList %}
<tr>
<td><a href="{% url "activity:update" activity.pk %}">{{ activity.title }}</a> </td>
<td width="10%">{{ activity.status }}</td>
<td width="10%">{{mission.name}}</td>
<td width="10%">{{ activity.time_from }}</td>
<td width="10%">{{ activity.time_to }}</td>
<td width="10%">{{ activity.date_exec }}</td>
</tr>
{% endfor %}

par exemple. ce statut d'activité serait des entiers tels que 1, 2, 3. Tout ce que je veux, c'est avoir une sortie au lieu d'afficher ces chiffres, il suffira simplement de:

if activity.status==1:
activity.status="Done"
elif activity.status ==2:
activity.status="Running"
else:
activity.status =="Not Yet"

S'il vous plaît aidez-moi à coder ceci.

Réponses:

2 pour la réponse № 1
{% for activity in activityDoneList %}
<tr>
<td><a href="{% url "activity:update" activity.pk %}">{{ activity.title }}</a> </td>
{% if activity.status == 1 %}
<td width="10%">Done</td>
{% elif activity.status == 2 %}
<td width="10%">Running</td>
{% else %}
<td width="10%">Done</td>
{% endif %}
<td width="10%">{{mission.name}}</td>
<td width="10%">{{ activity.time_from }}</td>
<td width="10%">{{ activity.time_to }}</td>
<td width="10%">{{ activity.date_exec }}</td>
</tr>
{% endfor %}

vous obtiendrez ce que vous cherchez, mais c’est plutôt bâclé. Il serait préférable que cela soit fait quelque part sur votre serveur. Ce n’est pas vraiment ce à quoi Jinja est destiné.

Vous pouvez également utiliser Javascript pour changer la valeur, mais cela pourrait casser si vos utilisateurs avaient JS désactivé.


0 pour la réponse № 2

Vous pouvez le faire à l'aide d'une balise template.

activity_tags.py

from django import template

register = template.Library()

@register.simple_tag()
def get_activity_status_value(status):
if status==1:
value="Done"
elif status ==2:
value="Running"
else:
value ="Not Yet"
return value

get_activity_status_value balise de modèle prend le statut d'activité en tant que paramètre et renvoie la valeur appropriée en fonction de la valeur de status.

Ensuite, dans votre modèle, vous pouvez simplement utiliser cette balise de modèle directement et la transmettre. activity.status et la valeur appropriée sera affichée.

{% load activity_tags %}

{% for activity in activityDoneList %}
<tr>
<td><a href="{% url "activity:update" activity.pk %}">{{ activity.title }}</a> </td>
<td width="10%">{% get_activity_status_value activity.status %}</td>
<td width="10%">{{mission.name}}</td>
<td width="10%">{{ activity.time_from }}</td>
<td width="10%">{{ activity.time_to }}</td>
<td width="10%">{{ activity.date_exec }}</td>
</tr>
{% endfor %}