Ich werde weiterhin mit der Admin-Seite spielen.
Letztes Mal wurde die Umfrage registriert, aber dieses Mal werden wir auch Choice registrieren (Review: Poll and Choice in models.py). Eins ist definiert).
Sie können es als admin.site.register (Auswahl) verwenden, wodurch die Registrierungsbildschirme für Umfragen und Auswahl getrennt werden. Die Beziehung zwischen den beiden besteht darin, dass die Umfrage mehrere Auswahlmöglichkeiten enthält. Daher möchte ich einen Bildschirm erstellen, der dem entspricht.
admin.py ######
class ChoiceInline(admin.StackedInline): #Ist StackedInline ein Inline-Format?
model = Choice
extra = 3 #Was bedeutet es, wie viele Modelle einzubauen?
class PollAdmin(admin.ModelAdmin):
fieldsets = [
(None, {'fields': ['question']}),
('Date information', {'fields': ['pub_date'], 'classes': ['collapse']}),
]
inlines = [ChoiceInline] #Ist Inline wie ein zusätzlicher Bereich?
admin.site.register(Poll, PollAdmin)
#"?" Wird am Ende des Kommentars hinzugefügt, weil ich nicht sicher bin, ob ich es verstehe.
Die Auswahl kann auch auf dem Bearbeitungsbildschirm von Poll registriert werden. Wenn Sie es kompakter gestalten möchten, setzen Sie die übergeordnete Klasse von ChoiceInline auf TabularInline, und jede Auswahl passt in eine Zeile.
Ich werde ein bisschen mehr damit spielen.
Standardmäßig werden nur die gespeicherten Daten als Zeichenfolge auf dem Listenanzeigebildschirm angezeigt. Hier können jedoch auch andere Elemente hinzugefügt werden.
Fügen Sie dazu der PollAdmin-Klasse die folgende Zeile hinzu.
admin.py ######
class PollAdmin(admin.ModelAdmin):
# ...
list_display = ('question', 'pub_date') # list_Anzeige mit Anzeige festlegen
#Ich habe zufällig einen Fehler beim Schreiben gemacht und den Vorgang sogar im Listenformat bestätigt. Ist es natürlich?
Und wenn du so schreibst
list_display = ('question', 'pub_date’,’was_published_recently’)
# was_published_kürzlich ist eine in Poll definierte Funktion (beachten Sie, dass vor kurzem heute im vorherigen Dokument war)
Es scheint auch möglich zu sein, den Rückgabewert der Funktion anzuzeigen. Der Unterstrich wird übrigens durch ein Leerzeichen ersetzt.
Als ersten Schritt werde ich ein kleines Poll-Modell hinzufügen.
models.py ######
from django.utils import timezone
class Poll(models.Model):
# ...
def was_published_recently(self):
return self.pub_date >= timezone.now() - datetime.timedelta(days=1) #Ist es innerhalb eines Tages nach Veröffentlichung?
was_published_recently.admin_order_field = 'pub_date'
was_published_recently.boolean = True
was_published_recently.short_description = 'Published recently?'
Sie können Optionen hinzufügen, indem Sie der PollAdmin-Klasse Folgendes hinzufügen.
admin.py ######
list_filter = ['pub_date'] # pub_Funktion zum Eingrenzen basierend auf dem Datum
search_fields = ['question'] #Fähigkeit, anhand von Fragen zu suchen
date_hierarchy = 'pub_date' #Ähnlich in der Funktion zum Datumsfilter
Es scheint, dass Sie es mithilfe einer Vorlage detaillierter anpassen können, aber ich werde es diesmal nicht berühren, da es im nächsten Tutorial ausführlich beschrieben wird. Und
Eingetragenes Tutorial 3. Ich freue mich.
Recommended Posts