django: TypeError: обектът 'tuple' не може да бъде извикан

Получаване на грешка при тип, обектът „кортеж“ не може да бъде извикан. Някаква идея какво може да е? (не се притеснявайте за вдлъбнатината. Копира се странно.) Опитвам се да създам избор въз основа на PackSize на 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)

Файл с модели:

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)

Файл с формуляри:

class AddToOrderForm(forms.ModelForm):

class Meta:
    model = LiquorOrder
    fields = ('OrderAmount', 'StorePrice')

person RuSs    schedule 24.08.2013    source източник
comment
Кортежите вътре в pack_size трябва да бъдат разделени със запетаи.(,)   -  person Ashwini Chaudhary    schedule 24.08.2013


Отговори (2)


Липсва ви запетая (,) между:

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

Поставете запетая:

>>> ((1,2), (2,3))
((1, 2), (2, 3))
person falsetru    schedule 24.08.2013

Във вашия кортеж липсва запетая.

поставете запетая между кортежите, както е показано:

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

Направете същото за всички

person Arun Rathi    schedule 15.04.2020