ठीक है, मुझे लगता है कि मैंने इसे समझ लिया है। समस्या Django और Psycopg2 के साथ लंबे समय से चली आ रही समस्या के साथ है। मूल रूप से, Psycopg2 स्वचालित रूप से DB को एक BEGIN स्टेटमेंट जारी करेगा। हालांकि, अगर Django को लगता है कि कोई डेटा-संशोधन नहीं हुआ है, तो वह लेनदेन के अंत में COMMIT जारी नहीं करेगा।
इस समस्या के कुछ समाधान हैं, http://www देखें। स्लाइडशेयर.नेट/OReillyOSCON/unbreaking-your-django-application अधिक जानकारी के लिए। आदर्श रूप से आप स्वचालित कमिट्स को बंद कर देते हैं (ऑटोकॉमिट =ट्रू को अपनी डीबी सेटिंग्स में सेट करके, अजीब नामकरण सम्मेलन)। यह केवल-पढ़ने के कार्यों पर लेनदेन को रोकता है, लेकिन लिखने के कार्यों पर भी आपको उन कार्यों को @commit_on_success डेकोरेटर में मैन्युअल रूप से लपेटने की आवश्यकता होती है।
वैकल्पिक रूप से, अपनी मिडलवेयर कक्षाओं में बस django.middleware.transaction.TransactionMiddleware जोड़ें। यह प्रत्येक अनुरोध को लेनदेन में लपेट देगा। इसका मतलब यह है कि लेन-देन में अनावश्यक रूप से केवल-पढ़ने के अनुरोधों को लपेटना, लेकिन यह एक त्वरित और गंदा समाधान है।