Le modele de «lesTaches» : class Task

Une tâche sera définie par :

  • un nom

  • une description

  • une date de création

  • la date à laquelle la tache devra être terminée (due_date)

  • la date à laquelle vous aimeriez vous mettre à travailler sur cette tache (schedule_date)

  • un booleen closed qui indique si la tâche est terminée ou pas

Pour cela, dans le répertoire de votre application lesTaches, complétez le fichier models.py dans lequel vous définirez la classe Task héritant de la classe models.Model de django.db

from django.db import models

class Task(models.Model):
        name = models.CharField(max_length=250)
        description = models.TextField()
        created_date = models.DateField(auto_now_add=True)
        closed = models.BooleanField(default=false)


        def __str__(self):
        return self.name

# classe à compléter

prise en compte du modèle : migrations

Utilisons la commande manage.py pour prendre en compte ce nouveau modèle et observons au passage le SQL correspondant :

python manage.py makemigrations lesTaches
python manage.py sqlmigrate lesTaches 0001
python manage.py migrate

shell de django

Pour aller dans le shell de django :

python manage.py shell

Et effectuez-y les commandes suivantes :

>>> from lesTaches.models import Task # importer la class Task
>>> Task.objects.all() # lister la liste des taches créées
[]

pour l’instant il n’y a aucune tache enregistrée …

Créons à présent une tâche :

>>> tache=Task()
>>> tache.name='une premiere tache'
>>> tache.description='la première mais pas la derniere'
>>> #  on enregistre
>>> tache.save()

Vérifions qu’elle est bien enregistrée :

>>> tache=Task.objects.all()[0]

Puis :

  • Vérifiez que les champs que vous avez renseignés sont bien présents.

  • Créez une tache supplémentaire et testez d’autres filtres que all() : filter, exclude, get , order_by, etc.

  • Ces filtres correspondent à des requêtes SQL automatiquement générées par l’ORM de Django.

Par exemple Task.objects.all() génère :

select * from Task ;
Task.objects.filter(created_date__lte='2022-01-01')[0]

génère la requête :

select * from Task WHERE created_date <= '2022-01-01';