[PYTHON] Entwicklungspraxis für Webanwendungen: Erstellen Sie mit Django eine Seite zum Erstellen von Schichten! (Experiment auf der Admin-Seite)

Bevor ich die eigentliche Seite berühre, möchte ich überprüfen, ob das von mir erstellte Modell wirklich in Ordnung ist.

Verwenden Sie, wie der Titel schon sagt, die Administrationsseite. Was ich hier experimentieren möchte, ist

  1. ** Termine nach Datum filtern **

  2. ** Folgen Sie der Beziehung in umgekehrter Reihenfolge **

ist. Ich hatte das Gefühl, dass alle [Tutorial] waren (http://docs.djangoproject.jp/en/latest/intro/tutorial01.html), also habe ich es nach der Überprüfung versucht.

Es ist jede admin.py, mit der man spielen kann. Schauen wir sie uns der Reihe nach an.

schedule/admin.py

from django.contrib import admin
from schedule.models import WorkTime,MonthShift,StaffSchedule,NgShift,GuestSchedule


#### base classes ####

class DateAdmin(admin.ModelAdmin):

	def schedule_date(self,obj):  #obj enthält ein Modellobjekt
		return obj.strfdate()  #Gibt zurück, was Sie auf der Änderungslistenseite sehen möchten

	date_hierarchy = 'date'  #Stellen Sie die Filterfunktion für Datumsobjekte ein


class TimeTableAdmin(admin.ModelAdmin):

	def time_table(self,obj):
		return obj.strftimetable()


#### main classes ####

###### staff ######
class MonthShiftAdmin(admin.ModelAdmin):
	list_display = ('year','month','groupschedule','completed',)  #Artikelliste oder Taple, die auf der Seite mit der Änderungsliste angezeigt werden sollen.
	list_filter = ('groupschedule',)  #Fügt eine Filterfunktion für bestimmte Elemente hinzu

admin.site.register(MonthShift,MonthShiftAdmin)  #Bewerben Sie sich, indem Sie das Modell für admin in das zweite Argument einfügen


class WorkTimeAdmin(TimeTableAdmin):
	list_display = ('title','time_table',)	# time_Tabelle ist eine Funktion des übergeordneten Elements
	list_filter = ('groupschedule',)

admin.site.register(WorkTime,WorkTimeAdmin)


class StaffScheduleAdmin(DateAdmin):
	list_display = ('schedule_date','staff','worktime',)	# schedule_Datum ist eine Funktion des übergeordneten Elements

	list_filter = ('staff__groupschedule','date','staff',)  #Sie können der umgekehrten Beziehung mit zwei Unterstrichen folgen

admin.site.register(StaffSchedule,StaffScheduleAdmin)


class NgShiftAdmin(DateAdmin):
	list_display = ('staff','schedule_date','get_values')

	def get_values(self,obj):
		return obj.ng_values()

	list_filter = ['date','staff',]

admin.site.register(NgShift,NgShiftAdmin)


###### guest ######
class GuestScheduleAdmin(DateAdmin,TimeTableAdmin):
	list_display = ('schedule_date','guest','time_table',)

	list_filter = ['date','guest',]

admin.site.register(GuestSchedule,GuestScheduleAdmin)

Es definiert eine übergeordnete Klasse zum Speichern von Code. Experimentieren Sie, um Elemente mit list_filter einzugrenzen. Ich könnte sie nach Datum getrennt sehen, daher wäre es schön, beim Erstellen einer Schichttabelle etwas Ähnliches zu tun.

staff/admin.py

from django.contrib import admin
from staff.models import Staff


class StaffAdmin(admin.ModelAdmin):
	list_display = ('name','ng_list',)
	list_filter = ('groupschedule',)

	def ng_list(self,obj):
		ngs = ""

		for ng in obj.ngshift_set.all():
			ngs += "%s(%s) ," % ( ng.date,ng.ng_values(), )

		return ngs

admin.site.register(Staff,StaffAdmin)

Die umgekehrte Beziehung zu xxxx_set war ebenfalls erfolgreich.

guest/admin.py

from django.contrib import admin
from guest.models import Guest


class GuestAdmin(admin.ModelAdmin):
	list_display = ('name','get_schedules',)
	list_filter = ('groupschedule',)

	def get_schedules(self,obj):
		schedules = ""

		for schedule in obj.guestschedule_set.all():
			schedules += "%s(%s) ," % ( schedule.date,schedule.strftimetable(), )

		return schedules

	get_schedules.short_description = 'Schedules'

admin.site.register(Guest,GuestAdmin)

Es unterscheidet sich nicht wesentlich von staff / admin.py.

owner/admin.py

from django.contrib import admin
from owner.models import GroupSchedule


class GroupScheduleAdmin(admin.ModelAdmin):
	list_display = ('group','owner',)


admin.site.register(GroupSchedule,GroupScheduleAdmin)

Es wird nervig, also habe ich es gestern nicht hinzugefügt. Ich werde am Ende nicht den Admin-Bildschirm verwenden, also ist das in Ordnung.

Das nächste Mal werde ich "Eine Vorlage für die Zeitplantabelle schreiben" ausführen.

Recommended Posts

Entwicklungspraxis für Webanwendungen: Erstellen Sie mit Django eine Seite zum Erstellen von Schichten! (Experiment auf der Admin-Seite)
Entwicklungspraxis für Webanwendungen: Erstellen Sie mit Django eine Seite zum Erstellen von Schichten! (Schichterstellungsseite)
Entwicklungspraxis für Webanwendungen: Erstellen Sie mit Django eine Seite zum Erstellen von Schichten! (Einführung)
Entwicklungspraxis für Webanwendungen: Erstellen Sie mit Django eine Seite zum Erstellen von Schichten! (Schreiben Sie eine Basisvorlage)
Entwicklungspraxis für Webanwendungen: Erstellen Sie mit Django eine Seite zum Erstellen von Schichten! (Entwurf des Datenbankmodells)
Todo-App mit Django erstellen ③ Aufgabenlistenseite erstellen
Erstellen Sie eine einfache Web-App mit Flasche
Todo-App mit Django erstellen ④ Ordner- und Aufgabenerstellungsfunktion implementieren
Entwicklung einer WEB-Anwendung mit Django [Erstellung des Admin-Bildschirms]
Stellen Sie Python 3.6 / Django / Postgres-Webanwendungen in Azure bereit
Erstellen Sie eine Todo-App mit Django REST Framework + Angular
Rückblick auf die Erstellung eines Webdienstes mit Django 1
Lassen Sie uns eine Todo-App mit dem Django REST-Framework erstellen
Rückblick auf die Erstellung eines Webdienstes mit Django 2
Stellen Sie die mit PTVS erstellte Django-App in Azure bereit
Todo-App mit Django erstellen ⑤ Funktion zum Bearbeiten von Aufgaben erstellen
Erstellen Sie eine Homepage mit Django
Erstellen Sie eine Webanwendung mit Django
(Fehler) Stellen Sie eine mit Flask mit Heroku erstellte Web-App bereit
Erstellen Sie eine Web-API, die Bilder mit Django liefern kann
Erstellen einer Todo-App mit Django ① Erstellen Sie eine Umgebung mit Docker
Implementieren Sie die Django-App auf Hy
DJango-Seite veröffentlicht auf Heroku: Practice
Erstellen Sie eine Webanwendung mit Django
Erstellen einer Entwicklungsumgebung mit Maven in Google App Engine [Java]
Startete eine Webanwendung auf AWS mit Django und wechselte Jobs
Erstellen Sie mit Django einen Datei-Uploader
Erstellen Sie eine Web-App, die mit Plotly Dash einfach visualisiert werden kann
"Klassifizierung von Müll nach Bild!" App-Erstellungstagebuch Tag3 ~ Webanwendung mit Django ~
Spielen Sie wie eine Web-App mit ipywidgets
Erstellen Sie eine GUI-App mit Tkinter of Python
Dämonisieren Sie eine Python-Webanwendung mit Supervisor
Erstellen der ersten App mit Django Startprojekt
Hinweise zum Aktivieren von PostgreSQL mit Django
Erstellen Sie einen Webdienst mit Docker + Flask
Ich habe eine WEB-Bewerbung bei Django gemacht
[kotlin] Erstellen Sie eine App, die Fotos erkennt, die mit einer Kamera auf Android aufgenommen wurden
Versuchen Sie, eine Webanwendung mit Vue.js und Django (Mac Edition) zu erstellen - (1) Umgebungskonstruktion, Anwendungserstellung
Django Tutorial (Blog App erstellen) ① - Vorbereitung, Erstellung der obersten Seite
So entwickeln Sie eine Cart-App mit Django
Gewinnen Sie die Python + Flask-Web-App mit Jenkins
Erstellen Sie eine PDF-Datei mit einer zufälligen Seitengröße
Erstellen Sie eine Seite, die unbegrenzt mit Python geladen wird
[Python] Erstellen Sie mit Docker eine Django-Entwicklungsumgebung
Erstellen Sie mit Django ein Dashboard für Netzwerkgeräte!
Erstellen Sie mit der Doker Toolbox eine Django-Entwicklungsumgebung
Erstellen Sie eine neue Seite im Zusammenfluss mit Python
Verfahren zur Erstellung plattformübergreifender Apps mit kivy
Erstellen Sie mit Django eine Hallo-Welt-Anwendung mit nur einer Datei
Bis Sie eine neue App in Django erstellen
Extrahieren Sie mit Python Daten von einer Webseite
Erstellen einer Django-Entwicklungsumgebung mit pyenv-virtualenv auf einem Mac
Was ist ein Hund? Startvolumen der Django-App erstellen --startapp
Erstellen Sie mit Py2app und Tkinter eine native GUI-App
[Übung] Erstellen Sie eine Watson-App mit Python! # 2 [Übersetzungsfunktion]
[Übung] Erstellen Sie eine Watson-App mit Python! # 1 [Sprachdiskriminierung]
Erstellen Sie eine komfortable Python 3 (Anaconda) -Entwicklungsumgebung mit Windows
Erstellen Sie eine Python-Entwicklungsumgebung mit Vagrant + Ansible + Fabric
Stellen Sie die Django-Anwendung in Google App Engine (Python3) bereit.