2013-08-24 40 views
11

Nhận lỗi loại, đối tượng 'tuple' không thể gọi được. Bất kỳ ý tưởng những gì nó có thể được? (Đừng lo lắng về sự thụt đầu dòng. Nó sao chép lạ.) Tôi đang cố gắng tạo ra các lựa chọn dựa trên PackSize của storeliquor.django: TypeError: đối tượng 'tuple' không được gọi là

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) 

hình thức file:

class AddToOrderForm(forms.ModelForm): 

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

Các tuples bên 'pack_size' nên được tách ra bằng dấu phẩy (',') –

Trả lời

35

Bạn đang thiếu dấu phẩy (,) Inbetween:

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

Đặt dấu phẩy.

>>> ((1,2), (2,3)) 
((1, 2), (2, 3)) 
Các vấn đề liên quan