【发布时间】:2014-07-14 17:59:28
【问题描述】:
我的一个测试函数(用@transaction.commit_manually 装饰)出现意外错误:
TransactionManagementError: Transaction managed block ended with pending COMMIT/ROLLBACK
我追踪到了这段代码:
print 'step 1, dirty = %s' % transaction.is_dirty()
query_set = Foo.objects.filter(name='leeroy')
print 'step 2, dirty = %s' % transaction.is_dirty()
n = query_set.count()
print 'step 3, dirty = %s' % transaction.is_dirty()
输出是这样的:
step 1, dirty = False
step 2, dirty = False
step 3, dirty = True
为什么调用 count() 会将事务标记为脏?
【问题讨论】:
标签: django transactions django-queryset