Django
Quelques notes Django : just for me !
Source : https://www.youtube.com/watch?v=ZkE1A2w0MAc
Auteur : Honoré Hounwanou
Gestion des modèles :
- showmigrations --> renvoit les migrations appliquées et non encore appliquées
- makemigrations --> génère les migrations
- migrate --> applique les migrations
Django extensions :
https://github.com/django-extensions/django-extensions
- sudo pip3 install django-extensions
- à rajouter dans les INSTALLED_APPS (settings.py)
Nb : attention, on installe 'django-extensions' mais dans le settings.py il faut rajouter 'django_extensions' dans les apps
- nouvelles options du manage.py : show_urls, shell_plus (importe directement tous nos modèles)
Django-Debug-Toolbar :
https://github.com/jazzband/django-debug-toolbar
- sudo pip3 install django-debug-toolbar
- à rajouter dans les INSTALLED_APPS (debug_toolbar')
- à rajouter dans les MIDDLEWARE ('debug_toolbar.middleware.DebugToolbarMiddleware',)
- à rajouter à la fin de urls.py du projet
if settings.DEBUG: import debug_toolbar urlpatterns = [ path('__debug__/', include(debug_toolbar.urls)), ] + urlpatterns
- importer la debug bar en début de urls.py du projet :
from django.conf import settings
Nb : attention, il faut rajouter le include dans les import du debut de urls.py
from django.conf.urls import url, include
Utilisation de models Django dans un script python 'standalone'
source : https://medium.com/getpy/using-django-models-in-a-standalone-python-script-839bc65d8cb9
Définiton des Relations dans les modèles :
-
Relations 'plusieurs-à-un' (
django.db.models.ForeignKey
)
- une voiture possede un fabricant
- un fabricant produit plusieurs voitures mais chaque voiture n'a qu'un seul fabricant
from django.db import models class Manufacturer(models.Model): # ... pass class Car(models.Model): manufacturer = models.ForeignKey(Manufacturer, on_delete=models.CASCADE) # ...
-
Relations plusieurs à plusieurs (
django.db.models.ManyToManyField
)
- une pizza comporte plusieurs objets garniture (Topping)
- une garniture peut se trouver sur plusieurs pizza
from django.db import models class Topping(models.Model): # ... pass class Pizza(models.Model): # ... toppings = models.ManyToManyField(Topping)
-
Relations un à un (
OneToOneField
)
- un Ministre est à la tête d'un seul Ministère (...)
- un Ministère est dirigé par un seul Ministre
La table Ministéres est en relation 1:1 avec la table Ministre
class Ministeres(models.Model): ... ministre = models.OneToOneField(Ministre)
source : https://docs.djangoproject.com/fr/2.1/topics/db/models/