django: TypeError: ‘tuple’ object kan niet worden aangeroepen

Krijg een typefout, ‘tuple’-object kan niet worden aangeroepen. Enig idee wat het zou kunnen zijn? (maak je geen zorgen over de inkeping. Het kopieert raar.) Ik probeer keuzes te maken op basis van 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)

Modellenbestand:

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)

Formulierenbestand:

class AddToOrderForm(forms.ModelForm):
class Meta:
    model = LiquorOrder
    fields = ('OrderAmount', 'StorePrice')

Antwoord 1, autoriteit 100%

Je mist een komma (,) tussen:

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

Plaats een komma:

>>> ((1,2), (2,3))
((1, 2), (2, 3))

Antwoord 2

Er ontbreekt een komma in je tuple.

voeg de komma tussen de tuples in
zoals getoond:

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

Doe hetzelfde voor iedereen

Other episodes