sql >> Base de Datos >  >> RDS >> PostgreSQL

Campo Django DateTime para generar campos de marca de tiempo sin zona horaria

Los tipos de datos para postgres en Django se asignan al literal de cadena timestamp with time zone , y no parece haber una opción para modificar ese tipo.

Que yo sepa, tienes tres opciones:

  1. Aproveche el gancho de Django para ejecutar raw sql después de la declaración de creación de tabla . Para hacer esto, cree un directorio llamado sql en su aplicación y un archivo en ese directorio llamado mymodel.postgres_psycopg2.sql . Coloque sus declaraciones de la tabla alter allí.

  2. Escriba un campo personalizado para definir los modificadores para el campo de marca de tiempo como mejor le parezca. Consulte "escribir campos de modelos personalizados ".

  3. Deje el campo django como está y realice la conversión de zona horaria en su aplicación para estar absolutamente seguro de que está pasando la hora correcta.

Mi preferencia personal por la integridad de los datos es #3. Al igual que con la codificación de caracteres, donde siempre quiere estar seguro de que conoce el juego de caracteres y está manejando las conversiones correctamente, me siento mucho más cómodo con las fechas/horas cuyos atributos (incluyendo TZ) están definidos con la mayor precisión posible. Puede estar seguro hoy de que toda su entrada llega a su aplicación ya en UTC, pero eso puede cambiar, especialmente si los usuarios finales proporcionan las marcas de tiempo. Por lo que vale, haría un esfuerzo adicional, convertiría la marca de tiempo en la aplicación a UTC y la almacenaría en la base de datos con UTC como zona horaria.