Dat is een typische race. Het controleert of de ingevoerde sleutel bestaat; als dat niet het geval is, doet het een insert, maar iemand anders kan de sleutel tussen de telling en de insert plaatsen. Transacties voorkomen dit niet.
De code lijkt dit te verwachten en te proberen ermee om te gaan, maar toen ik naar de code keek om deze zaak af te handelen, kon ik meteen zien dat deze kapot was. Hier gerapporteerd:http://code.djangoproject.com/ticket/11569
Ik raad je ten zeerste aan om bij de geheugencache-backend te blijven.