2013-08-24 13 views
11

型エラーを取得すると、 'tuple'オブジェクトは呼び出せません。どのようなアイデアかもしれない?私はstoreliquorのPackSizeに基づいて選択肢を作成しようとしています。django:TypeError: 'tuple'オブジェクトが呼び出し可能ではありません

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

pack_size' '内部タプルはコンマで区切らなければなりません(' ')。 –

答えて

35

あなたはカンマ(,を)逃している挟ん:

>>> ((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)) 
関連する問題