2011-04-16 106 views
0

我在下面偶然:的MySQL/sqlite3的

def save_formset(self, request, form, formset, change): 
    instances = formset.save(commit=False) 
    bargain_id = 0 
    total_price = Decimal(0) 
    for instance in instances: 
     if isinstance(instance, BargainProduct): 
      total_price += instance.quantity * instance.product.price 
      bargain_id = instance.id 
     instance.save() 
    updateTotal = Bargain.objects.get(id=bargain_id) 
    updateTotal.total_price = total_price - updateTotal.discount_price 
    updateTotal.save() 

此代碼爲我工作在我的本地MySQL安裝但是,對SQLite3的運行我的實際測試環境*我得到的「甩賣匹配查詢呢不存在。」錯誤..

我認爲這是由於保存在SQLite上的實例不同的層次結構..但是,它似乎他們運行(應該)行爲相同..?

*我不能Python支持我的liveserver ATM重新編譯的MySQL因此多數民衆贊成一個沒有去

回答

0

看代碼,如果你有任何實例出來的formset.save()的,bargain_id爲0時它會下降到Bargain.objects.get(id = bargain_id)行,因爲它會跳過for循環。如果它是0,我猜它會失敗,並顯示錯誤。

您可能想要檢查在您的formset.save()期間值是否正確存儲在數據庫中,並且它正在返回實例。

0

此行是給錯誤:

updateTotal = Bargain.objects.get(id=bargain_id) 

其中大部分可能是因爲該行的:

instances = formset.save(commit=False) 

你定義的表單集保存()方法?因爲它沒有看到有一個內置的。你可以通過訪問formset.cleaned_data返回的內容來保存它,如django docs所說。

編輯:我糾正自己,它實際上有一個基於此page save()方法。

0

我一直在看這個相同的問題。它將數據保存到數據庫,並填充表單。問題是instances = formset.save(commit=False)上的保存沒有返回值。當我查看內置的保存方法時,應該返回保存的數據。

另一個奇怪的事情是,它似乎在我的朋友MySQL後端工作,但不在他的SQLITE3後端。接下來,它不適用於我的MySQL後端。

0

本地環路返回這些打印輸出(在MySQL)..在sqlite3的失敗與上查詢不excist

('Formset: ', <django.forms.formsets.BargainProductFormFormSet object at 0x101fe3790>) 
('Instances: ', [<BargainProduct: BargainProduct object>]) 
[18/Apr/2011 14:46:20] "POST /admin/shop/deal/add/ HTTP/1.1" 302 0 
相關問題