Valeurs par défaut et champs vides
Fait partie de la section Modèles et interface d’administration du Journey Django de Coddy. Leçon 3 sur 23.
Enregistrez un livre sans préciser si vous l’avez lu, et la base de données refuse : NOT NULL constraint failed. Chaque champ est obligatoire jusqu’à ce que vous indiquiez le contraire, avec l’une des trois options suivantes :
has_subtitles = models.BooleanField(default=True)
rating = models.DecimalField(max_digits=3, decimal_places=1, null=True, blank=True)
tagline = models.CharField(max_length=200, blank=True)default est la valeur attribuée à une nouvelle ligne si vous n’en fournissez aucune. null=True permet à la colonne de stocker NULL, que Python interprète comme None. blank=True permet aux formulaires et à l’interface d’administration d’accepter que le champ soit vide.
Pour un nombre ou une date que vous ne connaissez peut-être pas, il faut à la fois null=True et blank=True. Pour le texte, blank=True suffit : un texte vide est stocké sous la forme "", et null lui donnerait deux sortes de valeurs vides. TextField est un champ texte sans limite de longueur, adapté à un contenu long comme une critique.
Défi
FacileRends facultatives les parties facultatives de Book :
is_readcommence àFalse.finishedpeut être vide : un livre non terminé n’a pas de date.- Ajoute un champ
summarypour un texte long sans limite de longueur ; il peut rester vide et être stocké comme texte vide, et non commeNULL.
Appuie sur « Jouer », puis, dans l’onglet Shell, saisis Book.objects.create(title="Emma", author="Jane Austen", year=1815, price="7.50") : cela affiche <Book: Book object (1)>, sans erreur.
Essayez vous-même
from django.db import models
class Book(models.Model):
title = models.CharField(max_length=200)
author = models.CharField(max_length=100)
year = models.IntegerField()
price = models.DecimalField(max_digits=6, decimal_places=2)
is_read = models.BooleanField()
finished = models.DateField()
Toutes les leçons de Modèles et interface d’administration
1Votre premier modèle
Votre premier modèleTypes de champs3Des pages issues de la base de données
Une liste issue de la base de donnéesUne page pour chaque livreEntraînez-vous par vous-même : Playground Django