#26458: The Avg aggregate should only automatically resolves its output field to FloatField on numeric sources -------------------------------------+------------------------------------- Reporter: charettes | Owner: nobody Type: | Status: new Cleanup/optimization | Component: Database | Version: master layer (models, ORM) | Severity: Normal | Keywords: Triage Stage: | Has patch: 0 Unreviewed | Needs documentation: 0 | Needs tests: 0 Patch needs improvement: 0 | Easy pickings: 0 UI/UX: 0 | -------------------------------------+------------------------------------- Before #24649 was fixed it was simply not possible to use the `Avg` function on non-numeric sources. The *good enough* solution was to allow use of the `output_field` kwarg and document it should be used when averaging `DurationField`.
As `DurationField` uses different underlying datatype for its storage (bigint, interval, ...) averaging on such fields [https://groups.google.com/d/msg/django-users/BwkK7R1WXYU/k4b5nzNwAQAJ might require or not] an explicit `output_field` and can be a source of confusion. As the SQL `AVG` function only defaults to using floating value datatype as a return value when numeric input is used I suggest adjusting the `Avg` expression's `output_field` resolution to only use `FloatField` for default when its source field is an instance of one of Django's numerical field classes. This would lift the requirement of explicitly specifying an `output_field` when averaging `DurationField` on PostgreSQL. -- Ticket URL: <https://code.djangoproject.com/ticket/26458> Django <https://code.djangoproject.com/> The Web framework for perfectionists with deadlines. -- You received this message because you are subscribed to the Google Groups "Django updates" group. To unsubscribe from this group and stop receiving emails from it, send an email to django-updates+unsubscr...@googlegroups.com. To post to this group, send email to django-updates@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/django-updates/052.fe4d27aa1149e37ccccc03d8b384f3b7%40djangoproject.com. For more options, visit https://groups.google.com/d/optout.