原子操作django

时间:2013-01-16 16:11:17

标签: database django transactions counter atomic

我最近更新了django 1.4并且已经解决了很多问题。

最近的是原子操作。

出于某种原因,单击链接时,视图会被调用两次。这已由开发服务器上的print语句验证。

举个例子:

   def link_createNewNumber(self, request, obj=None):
      print "*** createNewNumber Called ***"
      number = numbers.objects.filter(id=obj)
      if len(number) == 1:
         print "Exists, just redirect to new page"
         # ResponseRedirect here...
      elif len(number) == 0:
         # Code to create new entry
         print "Saved new database entry"
         # ResponseRedirect here...

现在我偶然发现了交易,这似乎就像我需要的那样。但是,即使将事务中间件添加到settings.py:

之后也是如此
...
'django.middleware.transaction.TransactionMiddleware',
...

和@ transaction.commit_on_success到函数的开头:

@transaction.commit_on_success
def link_createNewNumber(self, request, obj=None):
...

我经常得到以下输出(简化):

*** createNewNumber Called ***

*** createNewNumber Called ***

Saved new database entry

Saved new database entry

我很难过,因为这一切都与1.2.3一起工作。当选择链接时,问题的核心似乎是双重执行。

0 个答案:

没有答案