[PYTHON] Pratique de développement d'applications Web: Créez une page de création d'équipe avec Django! (Expérience sur la page d'administration)

Avant de toucher la page proprement dite, j'aimerais vérifier si le modèle que j'ai réalisé est vraiment correct.

Comme le titre l'indique, utilisez la page d'administration. Ce que je voudrais expérimenter ici, c'est

  1. ** Filtrer les rendez-vous par date **

  2. ** Suivez la relation à l'envers **

est. J'ai senti que tous étaient Tutoriel, alors je l'ai essayé après avoir examiné.

C'est à chaque admin.py de jouer avec. Regardons-les dans l'ordre.

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 contient un objet modèle
		return obj.strfdate()  #Renvoie ce que vous voulez voir sur la page de la liste des modifications

	date_hierarchy = 'date'  #Définir la fonction de filtrage par objet de date


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',)  #Liste des éléments ou touche à afficher sur la page de la liste des modifications.
	list_filter = ('groupschedule',)  #Ajoute une fonction de filtre pour les éléments spécifiés

admin.site.register(MonthShift,MonthShiftAdmin)  #Appliquer en mettant le modèle pour admin dans le deuxième argument


class WorkTimeAdmin(TimeTableAdmin):
	list_display = ('title','time_table',)	# time_table est une fonction du parent
	list_filter = ('groupschedule',)

admin.site.register(WorkTime,WorkTimeAdmin)


class StaffScheduleAdmin(DateAdmin):
	list_display = ('schedule_date','staff','worktime',)	# schedule_la date est une fonction du parent

	list_filter = ('staff__groupschedule','date','staff',)  #Vous pouvez suivre la relation inverse avec deux traits de soulignement

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)

Il définit une classe parent pour enregistrer le code. Expérimentez pour affiner les éléments par list_filter. Je pourrais les voir séparément par date, donc ce serait bien de faire quelque chose de similaire lors de la création d'une table de décalage.

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)

La relation inverse avec xxxx_set a également réussi.

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)

Ce n'est pas très différent de 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)

Cela devient ennuyeux, alors je ne l'ai pas ajouté hier. Je ne vais pas utiliser l'écran d'administration à la fin, donc ça va.

La prochaine fois, je ferai "Ecrire un modèle pour la table de planification".

Recommended Posts

Pratique de développement d'applications Web: Créez une page de création d'équipe avec Django! (Expérience sur la page d'administration)
Pratique de développement d'applications Web: Créez une page de création d'équipe avec Django! (Page de création de décalage)
Pratique de développement d'applications Web: Créez une page de création d'équipe avec Django! (Introduction)
Pratique de développement d'applications Web: Créez une page de création d'équipe avec Django! (Ecrire un modèle de base)
Pratique de développement d'applications Web: Créez une page de création d'équipe avec Django! (Conception du modèle de base de données)
Créer une application Todo avec Django ③ Créer une page de liste de tâches
Créez une application Web simple avec Flask
Créer une application Todo avec Django ④ Implémenter la fonction de création de dossier et de tâche
Développement d'une application WEB avec Django [Création de l'écran d'administration]
Déployer des applications Web Python 3.6 / Django / Postgres sur Azure
Créer une application Todo avec Django REST Framework + Angular
Retour sur la création d'un service Web avec Django 1
Essayez de créer une application Todo avec le framework Django REST
Retour sur la création d'un service Web avec Django 2
Déployer l'application Django créée avec PTVS sur Azure
Créer une application Todo avec Django ⑤ Créer une fonction d'édition de tâches
Créer une page d'accueil avec django
Créer une application Web avec Django
(Échec) Déployer une application Web créée avec Flask avec heroku
Créez une API Web capable de fournir des images avec Django
Créer une application Todo avec Django ① Créer un environnement avec Docker
Implémenter l'application Django sur Hy
Page DJango publiée sur heroku: Practice
Créer une application Web avec Django
Création d'un environnement de développement avec Maven sur Google App Engine [Java]
Lancement d'une application Web sur AWS avec django et modification des tâches
Créer un téléchargeur de fichiers avec Django
Créez une application Web qui peut être facilement visualisée avec Plotly Dash
"Classification des déchets par image!" Journal de création d'application jour3 ~ Application Web avec Django ~
Jouez comme une application Web avec ipywidgets
Créer une application graphique avec Tkinter de Python
Démonisez une application Web Python avec Supervisor
Création de la première application avec Django startproject
Remarques sur l'activation de PostgreSQL avec Django
Créer un service Web avec Docker + Flask
J'ai fait une application WEB avec Django
[kotlin] Créez une application qui reconnaît les photos prises avec un appareil photo sur Android
Essayez de créer une application Web avec Vue.js et Django (édition Mac) - (1) Construction d'environnement, création d'application
Tutoriel Django (Créer une application de blog) ① --Préparation, Création de la première page
Comment développer une application de panier avec Django
Gagnez l'application Web Python + Flask avec Jenkins
Créer un fichier PDF avec une taille de page aléatoire
Créer une page qui se charge indéfiniment avec python
[Python] Créer un environnement de développement Django avec Docker
Créez un tableau de bord pour les appareils réseau avec Django!
Créer un environnement de développement Django à l'aide de Doker Toolbox
Créer une nouvelle page en confluence avec Python
Procédure de création d'application multi-plateforme avec kivy
Créez une application Hello World avec un seul fichier avec django
Jusqu'à ce que vous créiez une nouvelle application dans Django
Extraire des données d'une page Web avec Python
Créer un environnement de développement Django à l'aide de pyenv-virtualenv sur Mac
Qu'est-ce qu'un chien? Volume de démarrage de la création de l'application Django --startapp
Créez une application graphique native avec Py2app et Tkinter
[Pratique] Créez une application Watson avec Python! # 2 [Fonction de traduction]
[Pratique] Créez une application Watson avec Python! # 1 [Discrimination linguistique]
Créez un environnement de développement Python 3 (Anaconda) confortable avec Windows
Créez un environnement de développement python avec vagrant + ansible + fabric
Déployer l'application Django sur Google App Engine (Python3)