﻿id	summary	reporter	owner	description	type	status	component	version	severity	resolution	keywords	cc	stage	has_patch	needs_docs	needs_tests	needs_better_patch	easy	ui_ux
26650	Automatically apply Cast based on output_field	Matt C	nobody	"Given the following model:
{{{
import django.db.models

class TempModel(django.db.models.Model):
    field1 = django.db.models.DecimalField(max_digits=12, decimal_places=2)
}}}
...when I run a query like so:
{{{
TempModel.objects.all().aggregate(
    my_sum=django.db.models.Sum(
        'field1', output_field=django.db.models.DateTimeField()
    )
)
}}}
...the result produces a `Decimal` result, no matter what `output_field` is specified.

I came across this issue by simply wanting to specify the number of decimal places that would get output in queries such as this.
That led me to find #23941, which shocked me in seeing that the ""sane"" behaviour/implementation was replaced with something that breaks down/invalidates the API.

Then I tried the query above, with all different kinds of `output_field` values and realised the problem is more systemic and severe, in the sense that specifying `output_field` is often pointless/futile.

Why can't the implementation actually honour the `output_field` parameter and construct SQL to cast/coerce fields into the appropriate DB field types?

The only other means (in which I am aware of) for ensuring that a query gets compiled to SQL that honours the clients' field type specifications is to use `.extra()` or `.raw()`, but then that is no longer DB agnostic.
I would have thought it was the job of `output_field` to achieve this in a DB agnostic manner, utilising the power of the ORM."	Cleanup/optimization	new	Database layer (models, ORM)	dev	Normal		output_field expression query annotate aggregate	Sergey Fedoseev	Accepted	0	0	0	0	0	0
