mirror of
https://github.com/django/django.git
synced 2025-08-30 23:37:50 +00:00
Fixed #30446 -- Resolved Value.output_field for stdlib types.
This required implementing a limited form of dynamic dispatch to combine expressions with numerical output. Refs #26355 should eventually provide a better interface for that.
This commit is contained in:
parent
d08e6f55e3
commit
1e38f1191d
10 changed files with 122 additions and 39 deletions
|
@ -848,10 +848,6 @@ class AggregateTestCase(TestCase):
|
|||
book = Book.objects.annotate(val=Max(2, output_field=IntegerField())).first()
|
||||
self.assertEqual(book.val, 2)
|
||||
|
||||
def test_missing_output_field_raises_error(self):
|
||||
with self.assertRaisesMessage(FieldError, 'Cannot resolve expression type, unknown output_field'):
|
||||
Book.objects.annotate(val=Max(2)).first()
|
||||
|
||||
def test_annotation_expressions(self):
|
||||
authors = Author.objects.annotate(combined_ages=Sum(F('age') + F('friends__age'))).order_by('name')
|
||||
authors2 = Author.objects.annotate(combined_ages=Sum('age') + Sum('friends__age')).order_by('name')
|
||||
|
@ -893,7 +889,7 @@ class AggregateTestCase(TestCase):
|
|||
|
||||
def test_combine_different_types(self):
|
||||
msg = (
|
||||
'Expression contains mixed types: FloatField, IntegerField. '
|
||||
'Expression contains mixed types: FloatField, DecimalField. '
|
||||
'You must set output_field.'
|
||||
)
|
||||
qs = Book.objects.annotate(sums=Sum('rating') + Sum('pages') + Sum('price'))
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue