Valori predefiniti e campi vuoti
Fa parte della sezione Modelli e pannello di amministrazione del percorso Django di Coddy. Lezione 3 di 23.
Salvi un libro senza indicare se l’hai letto e il database rifiuta l’operazione: NOT NULL constraint failed. Ogni campo è obbligatorio finché non specifichi diversamente, con una delle tre opzioni:
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 è il valore assegnato a una nuova riga quando non ne fornisci uno. null=True consente alla colonna di memorizzare NULL, che Python legge come None. blank=True consente ai moduli e all’area di amministrazione di accettare il campo vuoto.
Per un numero o una data che potresti non conoscere servono sia null=True sia blank=True. Per il testo serve solo blank=True: il testo vuoto viene memorizzato come "" e null gli darebbe due modi per essere vuoto. TextField è un campo di testo senza limite di lunghezza, adatto a contenuti lunghi come una recensione.
Sfida
FacileRendi facoltative le parti opzionali di Book:
is_readinizia comeFalse.finishedpuò essere vuoto: un libro non terminato non ha una data.- Aggiungi un campo
summaryper il testo lungo senza limiti di lunghezza; può essere lasciato vuoto e memorizzato come testo vuoto, non comeNULL.
Premi Run, poi nella scheda Shell digita Book.objects.create(title="Emma", author="Jane Austen", year=1815, price="7.50"): stampa <Book: Book object (1)>, senza generare un errore.
Provalo tu
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()
Tutte le lezioni di Modelli e pannello di amministrazione
1Il tuo primo modello
Il tuo primo modelloTipi di campoEsercitati da solo: Playground Django