Recherche…


Paramètres

Paramètre Détails
nul Si true, les valeurs vides peuvent être stockées comme null dans la base de données
blanc Si cela est vrai, le champ ne sera pas requis dans les formulaires. Si les champs sont laissés en blanc, Django utilisera la valeur du champ par défaut.
les choix Une itération d'itérables à 2 éléments à utiliser comme choix pour ce champ. Si défini, le champ est rendu sous la forme d'une liste déroulante dans l'administrateur. [('m', 'Male'),('f','Female'),('z','Prefer Not to Disclose')] . Pour regrouper les options, imbriquer simplement les valeurs: [('Video Source',((1,'YouTube'),(2,'Facebook')),('Audio Source',((3, 'Soundcloud'),(4, 'Spotify'))]
db_column Par défaut, django utilise le nom du champ pour la colonne de la base de données. Utilisez ceci pour fournir un nom personnalisé
db_index Si True , un index sera créé sur ce champ dans la base de données
db_tablespace Le tablespace à utiliser pour l'index de ce champ. Ce champ est utilisé uniquement si le moteur de base de données le prend en charge, sinon il est ignoré .
défaut La valeur par défaut pour ce champ. Peut être une valeur ou un objet appelable. Pour les valeurs par défaut mutables (une liste, un ensemble, un dictionnaire), vous devez utiliser un appelable. En raison de la compatibilité avec les migrations, vous ne pouvez pas utiliser lambdas.
modifiable Si la valeur est False , le champ n'est pas affiché dans l'administrateur du modèle ni dans ModelForm . La valeur par défaut est True .
messages d'erreur Utilisé pour personnaliser les messages d'erreur par défaut affichés pour ce champ. La valeur est un dictionnaire, les clés représentant l'erreur et la valeur étant le message. Les clés par défaut (pour les messages d'erreur) sont null , blank , invalid , invalid_choice , unique et unique_for_date ; des messages d'erreur supplémentaires peuvent être définis par des champs personnalisés.
Texte d'aide Texte à afficher avec le champ, pour aider les utilisateurs. HTML est autorisé.
on_delete Lorsqu'un objet référencé par une ForeignKey est supprimé, Django émule le comportement de la contrainte SQL spécifiée par l'argument on_delete. C'est le deuxième argument de position pour les champs ForeignKey et OneToOneField . D'autres champs n'ont pas cet argument.
clé primaire Si True , ce champ sera la clé primaire. Django ajoute automatiquement une clé primaire; il n'est donc nécessaire que si vous souhaitez créer une clé primaire personnalisée. Vous ne pouvez avoir qu'une seule clé primaire par modèle.
unique Si la valeur est True , des erreurs sont générées si des valeurs en double sont entrées pour ce champ. Ceci est une restriction au niveau de la base de données et pas simplement un bloc d'interface utilisateur.
unique_pour_date Définissez la valeur sur un DateField ou un DateTimeField , et des erreurs seront DateField s'il existe des valeurs en double pour la même date ou l'heure de la date .
unique_pour_mois Semblable à unique_for_date , sauf que les chèques sont limités pour le mois.
unique_pour_année Similaire à unique_for_date , sauf que les chèques sont limités à l'année.
verbose_name Un nom convivial pour le champ, utilisé par django à divers endroits (comme la création d'étiquettes dans les formulaires d'administration et de modèle).
validateurs Une liste de validateurs pour ce champ.

Remarques

  • Vous pouvez écrire vos propres champs si vous le trouvez nécessaire
  • Vous pouvez remplacer les fonctions de la classe du modèle de base, le plus souvent la fonction save()

Champs numériques

Des exemples de champs numériques sont donnés:

AutoField

Un entier auto-incrémenté généralement utilisé pour les clés primaires.

from django.db import models

class MyModel(models.Model):
    pk = models.AutoField()

Chaque modèle obtient un champ de clé primaire (appelé id ) par défaut. Par conséquent, il n'est pas nécessaire de dupliquer un champ id dans le modèle pour les besoins d'une clé primaire.


BigIntegerField

Un nombre entier convenable de -9223372036854775808 à 9223372036854775807 ( 8 Bytes ).

from django.db import models

class MyModel(models.Model):
    number_of_seconds = models.BigIntegerField()

IntegerField

IntegerField permet de stocker des valeurs entières comprises entre -2147483648 et 2147483647 ( 4 Bytes ).

from django.db import models

class Food(models.Model):
    name = models.CharField(max_length=255)
    calorie = models.IntegerField(default=0)

default paramètre default n'est pas obligatoire. Mais il est utile de définir une valeur par défaut.


PositiveIntegerField

Comme un IntegerField, mais doit être positif ou nul (0). Le PositiveIntegerField est utilisé pour stocker des valeurs entières comprises entre 0 et 2147483647 ( 4 Bytes ). Cela peut être utile sur le terrain, ce qui devrait être sémantiquement positif. Par exemple, si vous enregistrez des aliments avec ses calories, elles ne devraient pas être négatives. Ce champ empêchera les valeurs négatives via ses validations.

from django.db import models

class Food(models.Model):
    name = models.CharField(max_length=255)
    calorie = models.PositiveIntegerField(default=0)

default paramètre default n'est pas obligatoire. Mais il est utile de définir une valeur par défaut.


SmallIntegerField

SmallIntegerField permet de stocker des valeurs entières comprises entre -32768 et 32767 ( 2 Bytes ). Ce champ est utile pour les valeurs qui ne sont pas extrêmes.

from django.db import models

class Place(models.Model):
    name = models.CharField(max_length=255)
    temperature = models.SmallIntegerField(null=True)

PositiveSmallIntegerField

SmallIntegerField permet de stocker des valeurs entières comprises entre 0 et 32767 ( 2 Bytes ). Tout comme SmallIntegerField, ce champ est utile pour les valeurs qui ne vont pas aussi haut et devrait être sémantiquement positif. Par exemple, il peut stocker l'âge qui ne peut être négatif.

from django.db import models

class Staff(models.Model):
    first_name = models.CharField(max_length=255)
    last_name = models.CharField(max_length=255)
    age = models.PositiveSmallIntegerField(null=True)

Outre que PositiveSmallIntegerField est utile pour les choix, il s’agit de la façon dont Django a implémenté Enum:

from django.db import models
from django.utils.translation import gettext as _

APPLICATION_NEW = 1
APPLICATION_RECEIVED = 2
APPLICATION_APPROVED = 3
APPLICATION_REJECTED = 4

APLICATION_CHOICES = (
    (APPLICATION_NEW, _('New')),
    (APPLICATION_RECEIVED, _('Received')),
    (APPLICATION_APPROVED, _('Approved')),
    (APPLICATION_REJECTED, _('Rejected')),
)

class JobApplication(models.Model):
    first_name = models.CharField(max_length=255)
    last_name = models.CharField(max_length=255)
    status = models.PositiveSmallIntegerField(
        choices=APLICATION_CHOICES, 
        default=APPLICATION_NEW
    )
    ...

La définition des choix en tant que variables de classe ou variables de module en fonction de la situation est un bon moyen de les utiliser. Si des choix sont passés au champ sans noms conviviaux, cela créera une confusion.


DecimalField

Un nombre décimal à précision fixe, représenté dans Python par une instance Decimal. Contrairement à IntegerField et ses dérivés, ce champ a 2 arguments obligatoires:

  1. DecimalField.max_digits : nombre maximal de chiffres autorisé dans le nombre. Notez que ce nombre doit être supérieur ou égal à decimal_places.
  2. DecimalField.decimal_places : nombre de décimales à stocker avec le nombre.

Si vous voulez stocker des nombres jusqu’à 99 avec 3 décimales, vous devez utiliser max_digits=5 et decimal_places=3 :

class Place(models.Model):
    name = models.CharField(max_length=255)
    atmospheric_pressure = models.DecimalField(max_digits=5, decimal_places=3)

BinaryField

Ceci est un champ spécialisé, utilisé pour stocker des données binaires. Il accepte uniquement les octets . Les données sont sérialisées en base64 lors du stockage.

Comme cela stocke des données binaires, ce champ ne peut pas être utilisé dans un filtre.

from django.db import models

class MyModel(models.Model):
    my_binary_data = models.BinaryField()

CharField

Le CharField est utilisé pour stocker des longueurs de texte définies. Dans l'exemple ci-dessous, jusqu'à 128 caractères de texte peuvent être stockés dans le champ. L'entrée d'une chaîne plus longue entraînera une erreur de validation.

from django.db import models

class MyModel(models.Model):
    name = models.CharField(max_length=128, blank=True)

DateTimeField

DateTimeField est utilisé pour stocker les valeurs de date et heure.

class MyModel(models.Model):
    start_time = models.DateFimeField(null=True, blank=True)
    created_on = models.DateTimeField(auto_now_add=True)
    updated_on = models.DateTimeField(auto_now=True)

Un DateTimeField a deux paramètres facultatifs:

  • auto_now_add définit la valeur du champ sur la date / heure actuelle lors de la création de l'objet.

  • auto_now définit la valeur du champ sur la date / heure actuelle chaque fois que le champ est enregistré.

Ces options et le paramètre default sont mutuellement exclusifs.

Clé étrangère

Le champ ForeignKey est utilisé pour créer une relation many-to-one entre les modèles. Pas comme la plupart des autres champs nécessite des arguments de position. L'exemple suivant illustre la relation entre la voiture et le propriétaire:

from django.db import models

class Person(models.Model):
    GENDER_FEMALE = 'F'
    GENDER_MALE = 'M'

    GENDER_CHOICES = (
        (GENDER_FEMALE, 'Female'),
        (GENDER_MALE, 'Male'),
    )

    first_name = models.CharField(max_length=100)
    last_name = models.CharField(max_length=100)
    gender = models.CharField(max_length=1, choices=GENDER_CHOICES)
    age = models.SmallIntegerField()


class Car(model.Model)
    owner = models.ForeignKey('Person')
    plate = models.CharField(max_length=15)
    brand = models.CharField(max_length=50)
    model = models.CharField(max_length=50)
    color = models.CharField(max_length=50)

Le premier argument du champ est la classe à laquelle le modèle est lié. Le deuxième argument positionnel est l'argument on_delete . Dans les versions actuelles, cet argument n'est pas requis, mais il sera requis dans Django 2.0. La fonctionnalité par défaut de l'argument est affichée comme suit:

class Car(model.Model)
    owner = models.ForeignKey('Person', on_delete=models.CASCADE)
    ...

Cela entraînera la suppression des objets Car du modèle lorsque son propriétaire a supprimé du modèle Personne. C'est la fonctionnalité par défaut.

class Car(model.Model)
    owner = models.ForeignKey('Person', on_delete=models.PROTECT)
    ...

Cela empêchera la suppression des objets Personne s'ils sont liés à au moins un objet Car. Tous les objets Car qui font référence à un objet Personne doivent être supprimés en premier. Et puis l'objet Personne peut être supprimé.



Modified text is an extract of the original Stack Overflow Documentation
Sous licence CC BY-SA 3.0
Non affilié à Stack Overflow