Le fichier "blog/models.py" permet de définir les objets que nous appelons des "modèles". C'est à cet endroit que nous allons définir ce que c'est qu'un billet de blog.
Le fichier "blog/models.py" permet de définir les objets que nous appelons des "modèles". C'est à cet endroit que nous allons définir ce que c'est qu'un billet de blog.
Ligne 118:
Ligne 118:
Ce gros morceau de code a l'air effrayant, mais, ne vous inquiétez pas : nous allons vous expliquer ce que signifie chacune de ces lignes!
Ce gros morceau de code a l'air effrayant, mais, ne vous inquiétez pas : nous allons vous expliquer ce que signifie chacune de ces lignes!
-
Toutes les lignes qui commencent par "from" ou "import" sont des lignes qui permettent d'importer des morceaux d'autres fichiers. Concrètement, au lieu de recopier ou de copier-coller la même chose dans différents fichiers, nous pouvons tout simplement faire référence à certains morceaux d'autres fichiers à l'aide de "from ... import ...".
+
''class Billet(models.Model)'':
-
+
-
class Billet(models.Model):
+
* C'est cette ligne qui permet de définir notre modèle (ce qui est un "object").
* C'est cette ligne qui permet de définir notre modèle (ce qui est un "object").
* Le mot clef spécial "class" permet d'indiquer que nous sommes en train de définir un objet.
* Le mot clef spécial "class" permet d'indiquer que nous sommes en train de définir un objet.
Ligne 128:
Ligne 126:
Maintenant, nous allons pouvoir définir les propriétés dont nous parlions au début de ce chapitre : "title (titre)", "text (texte)", "created_date (date de création)", "published_date (date de publication)" et "author (auteur)". Pour cela, nous allons avoir besoin de définir le type de chaque champ (Est-ce que c'est du texte? Un nombre ? Une date ? Une relation à un autre objet, comme un objet utilisateur par exemple ?)
Maintenant, nous allons pouvoir définir les propriétés dont nous parlions au début de ce chapitre : "title (titre)", "text (texte)", "created_date (date de création)", "published_date (date de publication)" et "author (auteur)". Pour cela, nous allons avoir besoin de définir le type de chaque champ (Est-ce que c'est du texte? Un nombre ? Une date ? Une relation à un autre objet, comme un objet utilisateur par exemple ?)
-
* models.CharField - Cela nous permet de définir un champ texte avec un nombre limité de caractères.
+
* ''models.CharField'' - Cela nous permet de définir un champ texte avec un nombre limité de caractères.
-
* models.TextField - Cela nous permet de définir un champ texte sans limite de caractères. Parfait pour le contenu d'un billet de blog, non ?
+
* ''models.TextField'' - Cela nous permet de définir un champ texte sans limite de caractères. Parfait pour le contenu d'un billet de blog, non ?
-
* models.DateTimeField - Détinit que le champ en question est une date ou une heure.
+
* ''models.DateTimeField'' - Détinit que le champ en question est une date ou une heure.
-
* models.ForeignKey - C'est un lien vers un autre modèle.
+
* ''models.ForeignKey'' - C'est un lien vers un autre modèle.
-
Si vous voulez en savoir plus sur les modèles Django, n'hésitez pas à consulter la documentation officielle de Django (https://docs.djangoproject.com/en/2.2/ref/models/fields/#field-types).
+
Si vous voulez en savoir plus sur les modèles Django, n'hésitez pas à consulter la documentation officielle de Django ({{https://docs.djangoproject.com/en/2.2/ref/models/fields/#field-types}}).
-
Et sinon, c'est quoi "def publish(self):" ? Il s'agit de notre méthode "publish" dont nous parlions tout à l'heure. "def" signifie que nous créons une fonction/méthode qui porte le nom "publish". Vous pouvez changer le nom de la méthode si vous le souhaitez. La règle de nommage est d'utiliser des minuscules et des tirets bas à la place des espaces. Par exemple, une méthode qui calcule le prix moyen d'un produit pourrait s'appeler "calcul_prix_moyen".
+
Et sinon, c'est quoi ''def publish(self):'' ? Il s'agit de notre méthode "publish" dont nous parlions tout à l'heure. Nous créons une fonction/méthode qui porte le nom "publish". Vous pouvez changer le nom de la méthode si vous le souhaitez. La règle de nommage est d'utiliser des minuscules et des tirets bas à la place des espaces. Par exemple, une méthode qui calcule le prix moyen d'un produit pourrait s'appeler "calcul_prix_moyen".
Les méthodes renvoient ("return") souvent quelque chose. C'est le cas de la méthode "__str__". Dans notre tutoriel, lorsque nous appellerons la méthode "__str__()", nous allons obtenir du texte (string) avec un titre de Billet.
Les méthodes renvoient ("return") souvent quelque chose. C'est le cas de la méthode "__str__". Dans notre tutoriel, lorsque nous appellerons la méthode "__str__()", nous allons obtenir du texte (string) avec un titre de Billet.
-
Créer des tables pour votre modèle dans votre base de données
+
=== Créer des tables pour votre modèle dans votre base de données ===
La dernière étape pour cette section est d'ajouter notre nouveau modèle à notre base de données. Tout d'abord, nous devons signaler à Django que nous venons de créer notre modèle (nous venons de le terminer !). Allez sur votre terminal et tapez "python manage.py makemigrations blog". Le résultat devrait ressembler à ça :
La dernière étape pour cette section est d'ajouter notre nouveau modèle à notre base de données. Tout d'abord, nous devons signaler à Django que nous venons de créer notre modèle (nous venons de le terminer !). Allez sur votre terminal et tapez "python manage.py makemigrations blog". Le résultat devrait ressembler à ça :
Ligne 151:
Ligne 149:
Remarque : N'oubliez pas de sauvegarder les fichiers que vous modifiez. Dans le cas contraire, votre ordinateur exécute la version précédente, ce qui pourrait vous donner des messages d'erreur inattendus.
Remarque : N'oubliez pas de sauvegarder les fichiers que vous modifiez. Dans le cas contraire, votre ordinateur exécute la version précédente, ce qui pourrait vous donner des messages d'erreur inattendus.
-
Django vient de nous préparer un fichier de migration que nous allons pouvoir appliquer dès maintenant à notre base de données. Pour cela, tapez "python manage.py migrate blog". Normalement, vous devrez voir ceci s'afficher dans votre console :
+
Django vient de nous préparer un fichier de migration que nous allons pouvoir appliquer dès maintenant à notre base de données. Pour cela, tapez ''python manage.py migrate blog''. Normalement, vous devrez voir ceci s'afficher dans votre console :
<code>
<code>
~/djangology$ python manage.py migrate blog
~/djangology$ python manage.py migrate blog
Ligne 160:
Ligne 158:
</code>
</code>
-
Notre modèle Billet est maintenant intégré à la base de données. Ce serait cool de voir à quoi il ressemble réellement ! Pour ça, il va falloir attaquer la section suivante ! Au boulot !
+
Notre modèle Billet est maintenant intégré à la base de données. Ce serait bien de voir à quoi il ressemble réellement ! Pour ça, il va falloir attaquer la section suivante ! Au boulot !