Valores predeterminados y campos vacíos
Parte de la sección Modelos y el panel de administración del Journey de Django de Coddy. Lección 3 de 23.
Guarda un libro sin indicar si lo leíste y la base de datos se niega: NOT NULL constraint failed. Todos los campos son obligatorios hasta que indiques lo contrario, con una de estas tres opciones:
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 es el valor que recibe una fila nueva cuando no proporcionas ninguno. null=True permite que la columna almacene NULL, que Python lee como None. blank=True permite que los formularios y el administrador acepten el campo vacío.
Un número o una fecha que quizá no conozcas necesita tanto null=True como blank=True. El texto solo necesita blank=True: el texto vacío se almacena como "", y null le daría dos tipos de vacío. TextField es texto sin límite de longitud, para algo largo como una reseña.
Desafío
FácilHaz que las partes opcionales de Book sean opcionales:
is_readempieza comoFalse.finishedpuede estar vacío: un libro sin terminar no tiene fecha.- Un campo nuevo,
summary: texto largo, sin límite de longitud, puede estar vacío; la forma de Django para el texto.
Presiona Run y, después, escribe Book.objects.create(title="Emma", author="Jane Austen", year=1815, price="7.50") en la pestaña Shell y abre la pestaña Data.
Pruébalo tú mismo
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()
Todas las lecciones de Modelos y el panel de administración
1Tu primer modelo
Tu primer modeloTipos de campos3Páginas desde la base de datos
Una lista desde la base de datosUna página para cada libroPractica por tu cuenta: Playground de Django