2015-08-06 11:48 GMT+02:00 Àngel Fernández <[email protected]>:
> Hola a todos,
>
> Tengo un campo datetime, y veo que ni siquiera el cliente es capaz de buscar
> por fecha si no pones la hora.
>
> Pongo un ejemplo, un registro tiene puesto la fecha "06/08/2015 11:43:23", y
> quiero que poniendo en el buscador simplemente NombreCampo:"06/08/2015" me
> aparezca este registro y todos los del día 6, sin importar la hora.

Debes buscar:

NombreCampo: >="06/08/2015 00:00:00" NombreCampo: <="06/08/2015 23:59:59"

El botó filtro te ayudarà un poco a hacerlo y si es un filtro habitual
lo puedes guardar a favoritos y simplemente cambiar las fechas.

>
> No se si hay alguna manera fácil de hacerlo, pero por ahora estoy probando
> de crear un campo funcional para que tenga la fecha sin hora y poder buscar
> por ahí, pero no se como implementar el searcher.
>
>
>>     ticket_datetime = fields.DateTime('Ticket DateTime', required=True)
>>     ticket_date = fields.Function(fields.Date('
>>
>>
>>
>> '),
>>         'get_ticketdate', searcher='search_ticketdate')
>
> [...]
>>
>>      def get_ticketdate(self, name):
>>         return self.ticket_datetime.date()
>>
>>     @classmethod
>>     def search_ticketdate(cls, name, clause)
>>
>>        return [('ticket_datetime.date()',) + tuple(clause[1:])] ??
>
> Lógicamente esto no va, se podria implementar con algo así pero arreglando
> esto? O hay una forma mejor? No he encontrado ejemplos que me ayuden en el
> código :/

Un par de opciones:

- O gestionas los operadores (ejemplo ràpido que sólo serviría para la
igualdad):

    def search_ticketdate(cls, name, clause):
        return [('ticket_datetime', '>=', ..), ('ticket_datetime', '=<', ...)]

- O bien utilitzas python-sql. Pista: se puede pasar una expresión
python-sql como el segundo operando (almenos al operador "in" le
puedes pasar una subconsulta, no he probado otros casos).


-- 
Albert Cervera i Areny
Tel. 93 553 18 03
@albertnan
www.NaN-tic.com

Responder a