File tree Expand file tree Collapse file tree 2 files changed +13
-3
lines changed Expand file tree Collapse file tree 2 files changed +13
-3
lines changed Original file line number Diff line number Diff line change @@ -286,8 +286,15 @@ def _resolve_output_field(self):
286
286
"""
287
287
sources_iter = (source for source in self .get_source_fields () if source is not None )
288
288
for output_field in sources_iter :
289
- if any (not isinstance (output_field , source .__class__ ) for source in sources_iter ):
290
- raise FieldError ('Expression contains mixed types. You must set output_field.' )
289
+ for source in sources_iter :
290
+ if not isinstance (output_field , source .__class__ ):
291
+ raise FieldError (
292
+ 'Expression contains mixed types: %s, %s. You must '
293
+ 'set output_field.' % (
294
+ output_field .__class__ .__name__ ,
295
+ source .__class__ .__name__ ,
296
+ )
297
+ )
291
298
return output_field
292
299
293
300
@staticmethod
Original file line number Diff line number Diff line change @@ -884,7 +884,10 @@ def test_order_of_precedence(self):
884
884
self .assertEqual (p2 , {'avg_price' : Approximate (Decimal ('53.39' ), places = 2 )})
885
885
886
886
def test_combine_different_types (self ):
887
- msg = 'Expression contains mixed types. You must set output_field.'
887
+ msg = (
888
+ 'Expression contains mixed types: FloatField, IntegerField. '
889
+ 'You must set output_field.'
890
+ )
888
891
qs = Book .objects .annotate (sums = Sum ('rating' ) + Sum ('pages' ) + Sum ('price' ))
889
892
with self .assertRaisesMessage (FieldError , msg ):
890
893
qs .first ()
You can’t perform that action at this time.
0 commit comments