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