| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475 |
- from django.db import models
- from django.contrib.auth.models import User
- class TypeJournee(models.TextChoices):
- PAUVRE = 'pauvre', 'Pauvre en glucides'
- NORMAL = 'normal', 'Normal en glucides'
- RICHE = 'riche', 'Riche en glucides'
- class CategorieAliment(models.TextChoices):
- LEGUME_VERT = 'legume_vert', 'Légumes verts'
- PROTEINE = 'proteine', 'Protéines'
- LIPIDE = 'lipide', 'Lipides'
- GLUCIDE = 'glucide', 'Glucides'
- FRUIT = 'fruit', 'Fruits & Crudités'
- class Aliment(models.Model):
- nom = models.CharField(max_length=200)
- categorie = models.CharField(
- max_length=20,
- choices=CategorieAliment.choices
- )
- portion_standard = models.CharField(max_length=100)
- notes = models.TextField(blank=True, null=True)
-
- class Meta:
- ordering = ['categorie', 'nom']
-
- def __str__(self):
- return f"{self.nom} ({self.get_categorie_display()})"
- class Journee(models.Model):
- user = models.ForeignKey(User, on_delete=models.CASCADE)
- date = models.DateField()
- type_journee = models.CharField(
- max_length=10,
- choices=TypeJournee.choices
- )
- notes = models.TextField(blank=True, null=True)
-
- class Meta:
- ordering = ['-date']
- unique_together = ['user', 'date']
-
- def __str__(self):
- return f"{self.date} - {self.get_type_journee_display()}"
- class TypeRepas(models.TextChoices):
- PETIT_DEJEUNER = 'petit_dejeuner', 'Petit-déjeuner'
- DEJEUNER = 'dejeuner', 'Déjeuner'
- COLLATION = 'collation', 'Collation'
- DINER = 'diner', 'Dîner'
- class Repas(models.Model):
- journee = models.ForeignKey(Journee, on_delete=models.CASCADE, related_name='repas')
- type_repas = models.CharField(
- max_length=20,
- choices=TypeRepas.choices
- )
- heure = models.TimeField(blank=True, null=True)
- notes = models.TextField(blank=True, null=True)
-
- class Meta:
- ordering = ['heure']
-
- def __str__(self):
- return f"{self.get_type_repas_display()} - {self.journee.date}"
- class CompositionRepas(models.Model):
- repas = models.ForeignKey(Repas, on_delete=models.CASCADE, related_name='compositions')
- aliment = models.ForeignKey(Aliment, on_delete=models.CASCADE)
- nombre_portions = models.DecimalField(max_digits=4, decimal_places=1, default=1.0)
- notes = models.CharField(max_length=200, blank=True)
-
- def __str__(self):
- return f"{self.nombre_portions} x {self.aliment.nom}"
|