Campo de fecha – Modelos de Django

DateField es un campo que almacena la fecha, representada en Python por una instancia de datetime.date. Como sugiere el nombre, este campo se usa para almacenar un objeto de fecha creado en python. El widget de formulario predeterminado para este campo es TextInput. El administrador puede agregar un calendario de JavaScript y un acceso directo para «Hoy» explícitamente.

Sintaxis:

field_name = models.DateField(**options)

DateField tiene los siguientes argumentos opcionales adicionales:

CampoDeFecha.auto_ahora

  • Establece automáticamente el campo ahora cada vez que se guarda el objeto. Útil para las marcas de tiempo de «última modificación». Tenga en cuenta que siempre se utiliza la fecha actual; no es solo un valor predeterminado que puede anular. 
    El campo solo se actualiza automáticamente cuando se llama a Model.save() . El campo no se actualiza cuando se actualizan otros campos de otras formas, como QuerySet.update() , aunque puede especificar un valor personalizado para el campo en una actualización como esa.

Campo de fecha.auto_ahora_añadir

  • Establece automáticamente el campo ahora cuando se crea el objeto por primera vez. Útil para la creación de marcas de tiempo. Tenga en cuenta que siempre se utiliza la fecha actual; no es solo un valor predeterminado que puede anular. Por lo tanto, incluso si establece un valor para este campo al crear el objeto, se ignorará. Si desea poder modificar este campo, establezca lo siguiente en lugar de auto_now_add=True: 
    • Para DateField: predeterminado=fecha.hoy – desde fechahora.fecha.hoy()
    • Para DateTimeField: default=timezone.now – de django.utils.timezone.now()

       

Nota: Las opciones auto_now_add, auto_now y default son mutuamente excluyentes. Cualquier combinación de estas opciones dará como resultado un error.

Django Modelo DateField Explicación

Ilustración de DateField utilizando un ejemplo. Considere un proyecto llamado geeksforgeeks que tenga una aplicación llamada geeks. 

Consulte los siguientes artículos para comprobar cómo crear un proyecto y una aplicación en Django. 

Ingrese el siguiente código en el archivo models.py de la aplicación geeks

Python3

from django.db import models
from django.db.models import Model
# Create your models here.
 
class GeeksModel(Model):
    geeks_field = models.DateField()

Agregue la aplicación geeks a INSTALLED_APPS 

Python3

# Application definition
 
INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'geeks',
]

Ahora, cuando ejecutamos el comando makemigrations desde la terminal,

Python manage.py makemigrations

Se crearía una nueva carpeta llamada migraciones en el directorio geeks con un archivo llamado 0001_initial.py 

Python3

# Generated by Django 2.2.5 on 2019-09-25 06:00
 
from django.db import migrations, models
 
class Migration(migrations.Migration):
 
    initial = True
 
    dependencies = [
    ]
 
    operations = [
        migrations.CreateModel(
            name ='GeeksModel',
            fields =[
                ('id',
                  models.AutoField(
                  auto_created = True,
                  primary_key = True,
                  serialize = False,
                  verbose_name ='ID'
                )),
                ('geeks_field', models.DateField()),
            ],
        ),
    ]

Ahora corre, 

Python manage.py migrate

Por lo tanto, se crea un geeks_field DateField cuando ejecuta migraciones en el proyecto. Es un campo para almacenar el objeto python datetime.date.

¿Cómo usar DateField?

DateField se usa para almacenar la instancia de python datetime.date en la base de datos. Uno puede almacenar cualquier tipo de fecha usando la misma en la base de datos. Intentemos almacenar una fecha en el modelo creado anteriormente. 

Python3

# importing the model
# from geeks app
from geeks.models import GeeksModel
 
# importing datetime module
import datetime
 
# creating an instance of
# datetime.date
d = datetime.date(1997, 10, 19)
 
# creating an instance of
# GeeksModel
geek_object = GeeksModel.objects.create(geeks_field = d)
geek_object.save()

Ahora vamos a comprobarlo en el servidor de administración. Hemos creado una instancia de GeeksModel. 

DateField django models

Opciones de campo

Las opciones de campo son los argumentos dados a cada campo para aplicar alguna restricción o impartir una característica particular a un campo en particular. Por ejemplo, agregar un argumento null = True a DateField le permitirá almacenar valores vacíos para esa tabla en una base de datos relacional. 
Estas son las opciones de campo y los atributos que puede usar un DateField. 

Opciones de campo Descripción
Nulo Si es True , Django almacenará valores vacíos como NULL en la base de datos. El valor predeterminado es Falso .
Vacío Si es True , el campo puede estar en blanco. El valor predeterminado es Falso .
columna_db El nombre de la columna de la base de datos que se usará para este campo. Si no se proporciona, Django usará el nombre del campo. 
 
índice_db Si es Verdadero, se creará un índice de base de datos para este campo
db_tablespace El nombre del tablespace de la base de datos que se usará para el índice de este campo, si este campo está indexado. El valor predeterminado es la configuración DEFAULT_INDEX_TABLESPACE del proyecto, si está establecida, o el db_tablespace del modelo, si lo hay. Si el backend no admite espacios de tabla para índices, esta opción se ignora.
Defecto El valor predeterminado para el campo. Puede ser un valor o un objeto invocable. Si es invocable, se llamará cada vez que se cree un nuevo objeto. 
 
texto de ayuda Texto adicional de «ayuda» que se mostrará con el widget de formulario. Es útil para la documentación incluso si su campo no se usa en un formulario. 
 
Clave primaria Si es Verdadero, este campo es la clave principal para el modelo.
editable Si es False , el campo no se mostrará en el administrador ni en ningún otro ModelForm. También se omiten durante la validación del modelo. El valor predeterminado es Verdadero
 
error de mensajes El argumento error_messages le permite anular los mensajes predeterminados que generará el campo. Pase un diccionario con claves que coincidan con los mensajes de error que desea anular. 
 
texto de ayuda Texto adicional de «ayuda» que se mostrará con el widget de formulario. Es útil para la documentación incluso si su campo no se usa en un formulario. 
 
nombre_verbose Un nombre legible por humanos para el campo. Si no se proporciona el nombre detallado, Django lo creará automáticamente utilizando el nombre del atributo del campo, convirtiendo los guiones bajos en espacios. 
 
validadores Una lista de validadores para ejecutar para este campo. Consulte la documentación de los validadores para obtener más información. 
 
Único Si es Verdadero, este campo debe ser único en toda la tabla. 
 

Publicación traducida automáticamente

Artículo escrito por NaveenArora y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *