Les champs des modèles sont définis dans le module suivant: django.db.models.fields
Il est donc possible de voir tous les champs existants en exécutant la commande help(django.db.models.fields)
AutoField → incrémente automatiquement sa valeur BinaryField → stocke des données binaires brutes en octets (bytes) BooleanField → un champ True / False CharField → un champ pour une chaine de caractères assez courte TextField → pour du texte long CommaSeparatedIntegerField → entiers séparés par un virgule EmailField → vérifie une valeur d'adresse valide SlugField → format slug (alphanumérique + tirets) URLField → format URL DateField → une date, instance de datetime.date en python DateTimeField → une date et une heure, instance python de datetime.datetime DecimalField → un nombre décimal de taille fixe, instance python de Decimal FileField → un champ de fichier à téléverser (paramètre upload_to est obligatoire) ImageField → idem que FileField mais vérifie qu'il s'agit d'une image FilePathField → un path de fichier (paramètre path est obligatoire) FloatField → une instance de float en python GenericIPAddressField → une adresse ip valide IPV4 / IPV6 IPAddressField → une adresse ip textuel type 192.168.0.1 IntegerField → valeurs comprises entre -2147483648 à 2147483647 BigIntegerField → Un entier 64 bits PositiveIntegerField → valeurs comprises entre 0 et 2147483647 PositiveSmallIntegerField → valeurs comprises entre 0 et 32767 SmallIntegerField → valeurs comprises entre -32768 et 32767 NullBooleanField → un champ booléen qui accepte le Null TimeField → format heure instance de datetime.time
Il existe des champs qui lient les tables entre elles. Ces champs sont définis dans django.db.models
ForeignKey → relation plusieurs-à-un ManyToManyField → relation plusieurs-à-plusieurs OneToOneField → relation un-à-un
Paramètres pour les champs
------------ paramètres communs ------------------------------- db_column → nom de la colonne dans la base de données db_index → créer un index pour la colonne default → la valeur par défaut du champ editable → Si False le champ n'est pas éditable dans admin help_text → texte d'aide affiché dans le formulaire primary_key → si True devient la clé primaire unique → si True impossible d'avoir des doublons de valeur verbose_name → un nom plus explicite validators → une liste de validateurs à exécuter ------------ paramètres spécifiques --------------------------- primary_key → renseigner la clé primaire blank → autoriser la soumission d'un champ vide null → autoriser d'enregistrer en base une valeur nulle unique_for_date → unique pour une date unique_for_month → unique pour un mois unique_for_year → unique pour un an choices → choix possibles
Exemples d'utilisation
backoffice/models.py
class Product(models.Model): name = models.CharField(max_length=100) code = models.CharField(max_length=10, null=True, blank=True, unique=True) price_ht = models.DecimalField(max_digits=8, decimal_places=2, verbose_name="Prix unitaire HT") price_ttc = models.DecimalField(max_digits=8, decimal_places=2, verbose_name="Prix unitaire TTC")
Les dates
Pour les dates vous pouvez importer le module timezone pour entrer des dates automatiquement
backoffice/models.py
from django.utils import timezone class Product(models.Model): date_creation = models.DateTimeField(default=timezone.now(), blank=True, verbose_name="Date création")
Les clés étrangères
backoffice/models.py
class ProductItem(models.Model): product = models.ForeignKey('Product', verbose_name="Produit")
Le champ Many-To-Many
backoffice/models.py
class ProductItem(models.Model): attributes = models.ManyToManyField("ProductAttributeValue", related_name="product_item")