Without your help, I would not get the solution. Maybe the doc 
(https://docs.djangoproject.com/en/1.9/ref/models/querysets/#avg) should be 
more precise about this case.
Merci beaucoup


Le lundi 4 avril 2016 05:35:14 UTC+2, Simon Charette a écrit :
>
> Hi Tazo,
>
> The default `output_field` of the `Avg` aggregate is a `FloatField`[1] 
> hence
> the error raised here. In the case of SQLite, `DurationField`s are stored 
> as
> large integers of microseconds[2] and the result returned by the database 
> is
> already a float making `float(value)` a no-op in `convert_value()`[3].
>
> Since Django 1.9 it's possible to specify the `output_field` of an `Avg`
> expression as documented[4].
>
> In your case you want to do the following:
>
> Questionnaire.objects.filter(
>     site_id=1
> ).annotate(
>    moyenne=Avg('chrono__temps', output_field=DurationField())
> ).values('title','moyenne')
>
> Au plaisir,
> Simon
>
> [1] 
> https://github.com/django/django/blob/fdf5cd3429369954e8deb764d9f30f6374581613/django/db/models/aggregates.py#L45
> [2] https://docs.djangoproject.com/en/1.9/ref/models/fields/#durationfield
> [3] 
> https://github.com/django/django/blob/master/django/db/models/expressions.py#L282-L283
> [4] 
> https://docs.djangoproject.com/en/1.9/ref/models/querysets/#django.db.models.Avg
>  
> <https://www.google.com/url?q=https%3A%2F%2Fdocs.djangoproject.com%2Fen%2F1.9%2Fref%2Fmodels%2Fquerysets%2F%23django.db.models.Avg&sa=D&sntz=1&usg=AFQjCNHy9ETv9fmPLefytqt0O6V-yhjXgw>
>
> Le samedi 2 avril 2016 13:08:20 UTC-4, Tazo Gil a écrit :
>>
>> Hello,
>>
>> The following request works in my dev django project (sqlite) by not in 
>> production with postgres 
>>
>> out: >>> 
>> Questionnaire.objects.filter(site_id=1).annotate(moyenne=Avg('chrono__temps')).values('title','moyenne')
>>
>> The errors : 
>>
>>  out: Traceback (most recent call last):
>>  out:   File "<console>", line 1, in <module>
>>  out:   File 
>> "/home/mimi/.virtualenvs/atmav2/local/lib/python2.7/site-packages/django/db/models/query.py",
>>  
>> line 234, in __repr__
>>  out:     data = list(self[:REPR_OUTPUT_SIZE + 1])
>>  out:   File 
>> "/home/mimi/.virtualenvs/atmav2/local/lib/python2.7/site-packages/django/db/models/query.py",
>>  
>> line 258, in __iter__
>>  out:     self._fetch_all()
>>  out:   File 
>> "/home/mimi/.virtualenvs/atmav2/local/lib/python2.7/site-packages/django/db/models/query.py",
>>  
>> line 1074, in _fetch_all
>>  out:     self._result_cache = list(self.iterator())
>>  out:   File 
>> "/home/mimi/.virtualenvs/atmav2/local/lib/python2.7/site-packages/django/db/models/query.py",
>>  
>> line 112, in __iter__
>>  out:     for row in compiler.results_iter():
>>  out:   File 
>> "/home/mimi/.virtualenvs/atmav2/local/lib/python2.7/site-packages/django/db/models/sql/compiler.py",
>>  
>> line 808, in results_iter
>>  out:     row = self.apply_converters(row, converters)
>>  out:   File 
>> "/home/mimi/.virtualenvs/atmav2/local/lib/python2.7/site-packages/django/db/models/sql/compiler.py",
>>  
>> line 792, in apply_converters
>>  out:     value = converter(value, expression, self.connection, 
>> self.query.context)
>>  out:   File 
>> "/home/mimi/.virtualenvs/atmav2/local/lib/python2.7/site-packages/django/db/models/expressions.py",
>>  
>> line 283, in convert_value
>>  out:     return float(value)
>>  out: TypeError: float() argument must be a string or a number
>>
>> Thank you for your help.
>>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Django users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/django-users.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/django-users/0cb386ec-cd8f-4a88-a28d-715efa1c7613%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to