Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

django: TypeError: 'tuple' object is not callable

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') 
like image 674
RuSs Avatar asked Aug 24 '13 03:08

RuSs


People also ask

What does it mean when a tuple is not callable?

The “TypeError: 'tuple' object is not callable” error occurs when you try to call a tuple as a function. This can happen if you use the wrong syntax to access an item from a tuple or if you forget to separate two tuples with a comma.

How do I fix TypeError int object is not callable?

But in Python, this would lead to the Typeerror: int object is not callable error. To fix this error, you need to let Python know you want to multiply the number outside the parentheses with the sum of the numbers inside the parentheses. Python allows you to specify any arithmetic sign before the opening parenthesis.

What is tuple object in Python?

Tuple. Tuples are used to store multiple items in a single variable. Tuple is one of 4 built-in data types in Python used to store collections of data, the other 3 are List, Set, and Dictionary, all with different qualities and usage. A tuple is a collection which is ordered and unchangeable.


2 Answers

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)) 
like image 174
falsetru Avatar answered Oct 21 '22 01:10

falsetru


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

like image 29
Arun Rathi Avatar answered Oct 21 '22 01:10

Arun Rathi