35

Getting a type error, 'tuple' object is not callable. Any idea what it could be? (dont worry about the indentation. It copies in weird.) I'm trying to create choices based on PackSize of storeliquor.

Views.py:

def storeliquor(request, store_id, liquor_id):        
a = StoreLiquor.objects.get(StoreLiquorID=liquor_id)
s = Store.objects.get(StoreID=store_id)
x = Order.objects.get(storeID=s, Active=True)
y = a.OffPremisePrice
c = a.BottleSize

g = request.POST.get('OrderAmount', '')
b = a.PackSize
h = b*2
d = b*3
e = b*4
r = b*5
if c == "1750 ML":
    pack_size = (
        ('1', '1')
        ('3', '3')
        (b, b)
        (h, h)
        (d, d)
        (e, e)
        (r, r)
    )
elif c == "1000 ML":
    pack_size = (
        ('1', '1')
        ('3', '3')
        ('6', '6')
        (b, b)
        (h, h)
        (d, d)
        (e, e)
        (r, r)
    )
elif c == "750 ML":
    pack_size = (
        ('1', '1')
        ('3', '3')
        ('6', '6')
        (b, b)
        (h, h)
        (c, d)
        (e, e)
        (r, r)
    )     
elif c == "375 ML":
    pack_size = (
        ('3', '3')
        ('6', '6')
        ('12', '12')
        (b, b)
        (h, h)
        (d, d)
        (e, e)
        (r, r)
    )        
elif c == "200 ML":
    pack_size = (
        ('12', '24')
        ('24', '24')
        (b, b)
        (c, c)
        (c, d)
        (e, e)
        (r, r)
    ) 
else:
    pack_size = (
        (b, b)
        (c, c)
        (c, d)
        (e, e)
        (r, r)
    )        




if request.method == "POST":
    f = AddToOrderForm(request.POST)

    if f.is_valid():
        z = f.save(commit=False)
        z.TotalPrice = (float(y)) * (float(g))
        z.storeliquorID = a
        z.orderID = x

        z.save()        

    return HttpResponseRedirect('/stores/get/%s' % store_id)

else:
    f = AddToOrderForm()
    f.fields['OrderAmount'].choices = pack_size      
args = {}


args['liquor'] = a
args['s'] = s
args['form'] = f   

return render(request,'storeliquor.html', args)

Models file:

class LiquorOrder(models.Model):

LiquorOrderID = models.AutoField(primary_key=True)
storeliquorID = models.ForeignKey(StoreLiquor)
orderID = models.ForeignKey(Order)
OrderAmount = models.CharField('Order Amount', max_length=3)
TotalPrice = models.DecimalField('Total Price', max_digits=5, decimal_places=2)
StorePrice = models.DecimalField('Store Price', max_digits=5, decimal_places=2)

Forms file:

class AddToOrderForm(forms.ModelForm):

class Meta:
    model = LiquorOrder
    fields = ('OrderAmount', 'StorePrice')
RuSs
  • 719
  • 2
  • 10
  • 25

2 Answers2

74

You're missing comma (,) inbetween:

>>> ((1,2) (2,3))
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: 'tuple' object is not callable

Put comma:

>>> ((1,2), (2,3))
((1, 2), (2, 3))
falsetru
  • 314,667
  • 49
  • 610
  • 551
0

There is comma missing in your tuple.

insert the comma between the tuples as shown:

pack_size = (('1', '1'),('3', '3'),(b, b),(h, h),(d, d), (e, e),(r, r))

Do the same for all