J'ai un modèle avec un fichierdretimefield:
http://127.0.0.1:8000/api/shell/?created=2014-07-17T10:36:34.960Z # It returns an empty array whereas there are items with a created field greater than 2014-07-17T10:36:34.960Z
3 Réponses :
Cela peut ne pas être ce que vous voulez, mais vous pourriez simplement convertir de Unix Time. E.g.:
def filter_unix_dt(queryset, value): if not value: return queryset try: unix_time = int(value) t = datetime.fromtimestamp(unix_time) result = queryset.filter(created__gte=t) return result except ValueError: return queryset class ShellMessageFilter(django_filters.FilterSet): created = django_filters.DateTimeFilter(action=filter_unix_dt) class Meta: model = ShellMessage fields = ['created']
Réponse géniale, mais le django_filter devrait être Charfield au lieu de DateTimefilter: "Créé = django_filters.charfield (action = filtre_unix_dt)"
Solution plus simple Si vous ne vous souciez pas des fractions de secondes: remplacez le "T" avec de l'espace (% 20): a travaillé pour moi. p> p >
Le problème et la solution sont documentés dans cette page d'émission de RDF: https: // github.com/tomchristie/django-Rest-Framework/issues/1338 p>
TL; DR: UN DJANGO ISO Conversion 'Problème' empêche la DRF de travailler comme vous vous attendez. Une solution pour cela a été écrite dans la DRAF, vous permettant d'utiliser isodateTimefield code> au lieu de
denttimefield code>. Il suffit de rejouer le
t code> avec un espace de votre demande de paramétrage fonctionne également. P>
Pourriez-vous essayer cette URL: 127.0.0.1 : 8000 / API / Shell /? Créé = 2014-07-17% 2010: 36: 34.960 ?
Je pense que je suis dans ce cas: Github.com/tomchristie/django-REST -Framework / Problèmes / 1338
La première personne suggère également de supprimer le T de l'URL, alors peut-être que cela fonctionnera pour votre aussi.