django: TypeError: 'tuple' object is not callable

217,171

Solution 1

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))

Solution 2

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

Share:
217,171
RuSs
Author by

RuSs

Updated on March 16, 2021

Comments

  • RuSs
    RuSs over 3 years

    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')