Cómo obtener/guardar hora y día del mes por separado?

3,522 views
Skip to first unread message

Yunior Barceló Chávez

unread,
Sep 26, 2011, 9:22:14 AM9/26/11
to django-es
Hola, tengo un modelo con un campo del tipo fecha = models.DateTimeField()
esto guarda un valor tomado del sistema en la siguiente forma:

Sept. 26, 2011, 8:23 a.m.

en la vista tengo reglas para que ese campo guarde el valor en la db:

import datetime
MiModel.fecha = datetime.datetime.now()


pero ademas ¿Cómo puedo agregar campos que guarden esto por separado?

ejempo:
hora = models.DateTimeField(guarda solo: 8:23 a.m)
dia = models.DateTimeField(guarda solo día del mes: 26)

hay elementos del tipo models.datefield y models.timefield que puedo usar?

En el campo "hora" por defecto, necesito mostrar algo así --:--:-- --
, en caso de que no se especifique un valor o no se tome nada del
sistema:

hora = models.timefield(por defecto: --:--:-- --) <--ya que no hay un
valor como 8:23 a.m
dia = models.datefield(guarda solo: 26)

Gracias de antemano, espero puedan darme una idea de como hacerlo.

saludos...

Angel Alvarez

unread,
Sep 26, 2011, 9:29:25 AM9/26/11
to djan...@googlegroups.com
buscaste ne la documentacion de python?
http://docs.python.org/library/datetime.html


El día 26 de septiembre de 2011 10:22, Yunior Barceló Chávez
<barc...@gmail.com> escribió:

> --
> Ha recibido este mensaje porque está suscrito a Grupo "Grupo de Usuarios del Framework Django de habla hispana" de Grupos de Google.
>  Si quieres publicar en este grupo, envía un mensaje de correo
> electrónico a djan...@googlegroups.com
>  Para anular la suscripción a este grupo, envíe un mensaje a django-es-...@googlegroups.com
>  Para obtener más opciones, visita este grupo en http://groups.google.com.bo/group/django-es.

--
Angel

Yunior Barceló Chávez

unread,
Sep 26, 2011, 10:26:32 AM9/26/11
to djan...@googlegroups.com
intento separar los objetos del campo "fecha", pero no consigo separar
el conjunto del tiempo, es decir algo como:

f.fecha.time <---Esto da error, mirar abajo
8:23:49 751862 <---Salida que espera devolviera.

Miren lo que he estado intentando:

>>> f = Model.objects.get(id="4685")
>>> f.fecha
datetime.datetime(2011, 9, 26, 8, 23, 49, 751862)
>>> f.fecha.day
26

>>> f.fecha.month
9

>>> f.fecha.hour
8

>>> f.fecha.minute
23

>>> f.fecha.second
49

>>> f.fecha.time
<built-in method time of datetime.datetime object at 0x978de18>

>>> f.fecha(hour, minute, second)
Traceback (most recent call last):
File "<console>", line 1, in <module>
NameError: name 'hour' is not defined

>>> f.fecha.(hour, minute, second)
File "<console>", line 1
f.fecha_firma.(hour, minute, second)
^
SyntaxError: invalid syntax
>>>


El 26/09/11, Angel Alvarez <angelclau...@gmail.com> escribió:

Matías Bellone

unread,
Sep 26, 2011, 10:33:44 AM9/26/11
to djan...@googlegroups.com
2011/9/26 Yunior Barceló Chávez <barc...@gmail.com>:

>>>> f.fecha.time
> <built-in method time of datetime.datetime object at 0x978de18>


Por lo visto es un método. ¿Probaste llamadon el método con "f.fecha.time()" ?

Saludos,
Toote
--
Web: http://www.enespanol.com.ar

Alfredo Ramirez Aguirre

unread,
Sep 26, 2011, 11:29:14 AM9/26/11
to djan...@googlegroups.com
No creo que necesites guardar los campos de tu fecha por separado en la base de datos

Si necesitas la fecha y hora un campo DateTime tiene los dos, esto simplifica cualquier query en la base de datos sobre los datos. DateTime te va a regresar un objeto datetime.

Para obtener los datos por separados puedes usar http://docs.python.org/library/datetime.html#datetime.datetime.year

Si necesitas fromatearlo en forma de string strftime te ayudara a formatear tu fecha. Referencia rapida: http://strftime.org/

Si necesitas formatear esta fecha en un template lo mejor es usar el filtro date, http://docs.djangoproject.com/en/dev/ref/templates/builtins/#std:templatefilter-date

Parece que el sitio djangoproject.com esta down.

Saludos,

A


Yunior Barceló Chávez

unread,
Sep 26, 2011, 1:36:49 PM9/26/11
to djan...@googlegroups.com
Gracias Alfredo Ramirez

Pero como puedo iria la lina para guarda solo la hora en otro campo separado:
ejemplo:

class MiModel:
...
...
Fecha = models.DateTimeField() <- Será obtenido automaticamente
desde el sistema
hora = models.DateTimeField() <-Guardar aqui, solo la hora
obtenida en el campo Fecha.

es algo así?
MiModel.hora = MiModel.Fecha.time()

o en el campo hora = models.DateTimeField(¿hay que especificar algo
aqui para que sepa que solo guardará hora?)

o este campo iria así?: hora = models.TimeField()

MiModel.Fecha seria un objeto del tipo: datetime.datetime(2011, 9, 26,
8, 23, 49, 751862)

y

MiModel.hora del tipo datetime.time(8, 23, 49, 751862)

estoy un poco liado con esto xD.

saludos..

El 26/09/11, Alfredo Ramirez Aguirre <alfredo...@googlemail.com> escribió:

Yunior Barceló Chávez

unread,
Sep 26, 2011, 2:04:23 PM9/26/11
to djan...@googlegroups.com
ya ya lo tengo...
.xD

ahora solo necesito que si el campo hora = models.TimeField() no
recive ningun valor, entonces guarde lo siguiente : "--:--:--", esto
sería el valor por defecto

¿alguna una idea?

saludos

El 26/09/11, Yunior Barceló Chávez <barc...@gmail.com> escribió:

Alfredo Aguirre

unread,
Sep 26, 2011, 4:22:48 PM9/26/11
to djan...@googlegroups.com
Hey,

La base de datos no soporta guardar un valor asi por que eso es un string. Lo que puedes hacer es hacer que tu campo sea ``blank=True`` y ``null=True``.

Asi que puedes hacer que tu campo regrese "--:--:--" cuando tu campo ``hora`` es ``None``. Quizas una propiedad en tu ``model`` que obtenga regrese ese valor.



2011/9/26 Yunior Barceló Chávez <barc...@gmail.com>
ya ya lo tengo...
Reply all
Reply to author
Forward
0 new messages