Menu
CoddyTech

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.

challenge icon

Desafío

Fácil

Haz que las partes opcionales de Book sean opcionales:

  • is_read empieza como False.
  • finished puede 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

Practica por tu cuenta: Playground de Django