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 11886,F() expressions don't retain parentheses into final SQL,Russell Keith-Magee,nobody,"Reported by Brent Hagany on django-users: I'm having some trouble getting F() expressions to obey my parentheses when I don't want the default order of operations. For example, given the model: {{{ class MyModel(models.Model): wins = models.DecimalField(max_digits=1, decimal_places=0) losses = models.DecimalField(max_digits=1, decimal_places=0) win_percentage = models.DecimalField(max_digits=4, decimal_places=3, default=Decimal('0.000')) }}} I get the following results when trying to calculate the win_percentage: {{{ In [1]: MyModel.objects.create(wins=2, losses=4) Out[1]: In [2]: MyModel.objects.all().update(win_percentage=F('wins') / (F ('wins') + F('losses'))) Out[2]: 1 # I expect this to return Decimal(""0.333"") In [3]: MyModel.objects.get(pk=1).win_percentage Out[3]: Decimal(""5.000"") }}} It appears to be ignoring the parentheses around F('wins') + F ('losses'), and so instead of 2 / (2 + 4) = .333, I'm getting 2 / 2 + 4 = 5. ",,closed,Uncategorized,1.1,,fixed,,,Unreviewed,0,0,0,0,0,0