2014-03-28 33 views
2

我的Django的V1.6.2運行單元測試,並收到此錯誤:Django的單元測試:不能做查詢子查詢在不同DB

ValueError: Can't do subqueries with queries on different DBs. 

運行網站但沒有發生。

我只有一個指定的數據庫。

在谷歌上進行了一次快速搜索,結果發現只有一個相關結果,並沒有幫助我。

更新的更多細節:

這是管理M2M關係的中間模式,這就是導致問題的查詢:

ProductCategory.objects.filter(category=category, product=product).delete() 

更新:加入微量

====================================================================== 
ERROR [0.079s]: test_sync (goproducts.apps.products.tests.productSyncTestCase) 
---------------------------------------------------------------------- 
Traceback (most recent call last): 
    File "/private/var/www/goproducts/goproducts/goproducts/apps/products/tests.py", line 55, in test_sync 
    product.objects.sync(self.message) 
    File "/private/var/www/goproducts/goproducts/goproducts/apps/products/managers.py", line 97, in sync 
    ProductCategory.objects.filter(category=category, product=product).delete() 
    File "/private/var/www/goproducts/lib/python2.7/site-packages/django/db/models/query.py", line 464, in delete 
    collector.collect(del_query) 
    File "/private/var/www/goproducts/lib/python2.7/site-packages/django/db/models/deletion.py", line 166, in collect 
    reverse_dependency=reverse_dependency) 
    File "/private/var/www/goproducts/lib/python2.7/site-packages/django/db/models/deletion.py", line 77, in add 
    if not objs: 
    File "/private/var/www/goproducts/lib/python2.7/site-packages/django/db/models/query.py", line 100, in __nonzero__ 
    self._fetch_all() 
    File "/private/var/www/goproducts/lib/python2.7/site-packages/django/db/models/query.py", line 854, in _fetch_all 
    self._result_cache = list(self.iterator()) 
    File "/private/var/www/goproducts/lib/python2.7/site-packages/django/db/models/query.py", line 220, in iterator 
    for row in compiler.results_iter(): 
    File "/private/var/www/goproducts/lib/python2.7/site-packages/django/db/models/sql/compiler.py", line 709, in results_iter 
    for rows in self.execute_sql(MULTI): 
    File "/private/var/www/goproducts/lib/python2.7/site-packages/django/db/models/sql/compiler.py", line 772, in execute_sql 
    sql, params = self.as_sql() 
    File "/private/var/www/goproducts/lib/python2.7/site-packages/django/db/models/sql/compiler.py", line 94, in as_sql 
    having, h_params = self.query.having.as_sql(qn=qn, connection=self.connection) 
    File "/private/var/www/goproducts/lib/python2.7/site-packages/django/db/models/sql/where.py", line 103, in as_sql 
    sql, params = child.as_sql(qn=qn, connection=connection) 
    File "/private/var/www/goproducts/lib/python2.7/site-packages/django/db/models/sql/where.py", line 401, in as_sql 
    raise ValueError("Can't do subqueries with queries on different DBs.") 
ValueError: Can't do subqueries with queries on different DBs. 

---------------------------------------------------------------------- 
+0

你可以添加更多的細節?查詢和模型 – Anup

+0

好吧,需要知道什麼是類別和產品?在引擎蓋下它們被轉換爲pk,因此請確保類別和產品是ID。並且還更新跟蹤,以及全視圖功能可能!!!! – Anup

+0

我相信我提供的信息就夠了,導致錯誤的聲明不是子查詢。 –

回答

0

我發現了這個問題,我用模擬庫來模擬同步功能

Category.objects.sync = MagicMock() 

評論這個問題修正了它。

+0

所以現在你已經在某個地方打破了測試。這是一種忽略問題而不是解決問題的方法。 – Bono

+0

當然,當我刪除該行時,我會使用另一種方法來確保測試是有意的,非常感謝您的關注。 –

+0

你的答案或你的問題反映了這一點。仍然,很高興知道;) – Bono