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')
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.
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.
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.
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))
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
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With