Ich habe ein Rang-Attribut für das Objekt 'Menge' in meinen Django-Projektansichten erstellt. Das ist meine Seite. Ich habe versucht {{ bid.rank }}
in meiner Vorlage. Ich konnte den Rang für einen bestimmten Betrag in meiner Vorlage nicht abrufen. Bitte helfen Sie mir, wie ich den Rangwert auf meiner Seite bekommen kann.Wie kann ich auf den 'Rang' einer Vorlage zugreifen, die ich zum Sortieren von Objekten in meinen Django-Ansichten zugewiesen habe?
Hier ist mein Code:
views.page:
def bid_list(request):
queryset = Bid.objects.all().order_by('amount')
current_rank = 1
counter = 0
for bid in queryset:
if counter < 1: # for first bid
bid.rank = current_rank
else: # for other bids
if bid.amount == queryset[counter - 1].amount:
# if bid and previous bid have same score,
# give them the same rank
bid.rank = current_rank
else:
# first update the rank
current_rank += 1
# then assign new rank to bid
bid.rank = current_rank
counter += 1
context = {
"bid.rank" : "current_rank",
"object_list": queryset,
"title": "List"
}
return render(request, 'bid_list.html', context)
bid_list.html:
<table cellspacing="1" id="myTable" class="table table-striped" >
<thead>
<tr> <th>User</th>
<th>amount</th>
<th>rank</th>
</tr>
</thead>
{% for obj in object_list %}
<tbody>
<tr> <td>{{obj.user}}</td>
<td>{{obj.amount}}</td>
{% for bid in bid.rank %}
<td>{{bid.rank}}</td>
{% endfor %}
</tr>
</tbody>
{% endfor %}
</table>
Update - 1:
html:
{% for obj in object_list %}
<tbody>
<tr> <td>{{obj.user}}</td>
<td>{{obj.amount}}</td>
<td>{{obj.rank}}</td>
</tr>
</tbody>
{% endfor %}
Update:
context = {
"queryset": queryset,
"title": "List"
}
{% for bid in queryset %}
<tbody>
<tr> <td>{{bid.user}}</td>
<td>{{bid.amount}}</td>
<td>{{bid.rank}}</td>
</tr>
</tbody>
Meine Seite nach dem Code zu aktualisieren -
Ich bin in der Lage für den Rang zu bekommen nur eine Zeile als meine aktualisierte Seite in der Frage. Wie kann ich Ränge für alle Benutzer erhalten? – vanam
Überprüfen Sie, ob die Einrückung in Ihrem Code korrekt ist.Wenn Sie 'render (...)' innerhalb der Schleife zurückgeben, setzen Sie erst den Rang für das erste Objekt, bevor Sie die Antwort zurückgeben. – Alasdair
Danke für Ihre freundliche Antwort, es funktioniert – vanam