Ich verwende django tables2, um Daten in Tabellenform zu rendern. Ich möchte, dass die Tabelle beim Laden der Seite standardmäßig nach Spalte1 sortiert wird. Die Sortierung funktioniert beim Klicken auf die Spalte, aber ich möchte, dass diese beim Laden der Seite standardmäßig sortiert wird.Django tables2 - Wie sortiere ich die Tabellenspalte beim Laden der Seite?
Antwort
Wenn Ihre Datenbank SQLite, versuchen:
results = model_name.objects.extra(select={'model_field':'CAST(model_field AS INTEGER)'}).order_by('model_field')
return render(request, template_name, {"results":results})
Der Table
Konstruktor hat einen order_by
-Argument. Sie können damit die Erstbestellung festlegen.
import django_tables2 as tables
class Table(tables.Table):
first_name = tables.Column()
last_name = tables.Column()
def view(request):
table = Table(data, order_by='last_name')
return render(request, 'template.html', {'table': table})
Diese Option ist auch in Table
‚s verfügbar class Meta
:
class Table(tables.Table):
first_name = tables.Column()
last_name = tables.Column()
class Meta:
order_by = '-last_name' # use dash for descending order
Das sortiert meine Tabelle, aber andere Sortierfelder funktionieren nicht. Nur der Nachname ist sortiert –
Sie können auch ein Tupel von Spalten übergeben, nach denen sortiert werden soll. Aber das ist nicht die Frage, die du gestellt hast. – Jieter
Ich fragte nach Arbeitstabelle sortieren. Wenn ich order_by gebe, wird die Tabelle als ordered_by lastname angezeigt. Und standardmäßig ist das Sortiersymbol (Abwärtspfeil) für die Nachname-Spalte ausgewählt. Wenn wir in diesem Fall eine andere Spalte auswählen, funktioniert die Sortierung nicht. Wenn wir order_by entfernen, funktioniert die Sortierung in anderen Spalten ebenfalls einwandfrei. –
Die Frage ist, über die gerenderte Tabelle für django-tables2, nicht regelmäßig querysets Sortierung. – Jieter