2014-09-03 17 views
15

इसलिए मैंने अपने Django वेब सर्वर पर दक्षिण के साथ कुछ मुद्दों का अनुभव करना शुरू कर दिया है। माइग्रेट आदेश इस उत्पादन हर के साथ विफल हो रहा है:,django.db आयात मॉडल से, माइग्रेशन ImportError: नाम माइग्रेशन आयात नहीं कर सकता

from django.db import models, migrations 

ImportError: cannot import name migrations 

(इस से ऊपर त्रुटि फाइल करने के लिए भगदड़ प्रदर्शित करता है कि माइग्रेट होने में विफल)

मेरे Django संस्करण 1.5.1 है, जबकि मेरी दक्षिण संस्करण 0.8.4

जो चीज मुझे सबसे ज्यादा परेशान करती है वह यह है कि मॉड्यूल django.db.migrations कहीं भी नहीं मिला है।

कोई भी विचार?

+1

आप 'django.db' से 'माइग्रेशन' आयात करने का प्रयास क्यों कर रहे हैं? यह कोड कहां स्थित है और कोड में 'माइग्रेशन' का आयात कैसे किया जाता है? – alecxe

+1

आप क्या हासिल करने की कोशिश कर रहे हैं? – Joren

+0

वास्तव में मैं कहीं भी माइग्रेशन आयात करने की कोशिश नहीं कर रहा हूं। वह कोड माइग्रेट करने के लिए फ़ाइल पर है: यह rest_framework.authtoken ऐप से कोड है, और जैसा कि मैंने ऊपर बताया है, मैं जो त्रुटि संदेश प्राप्त कर रहा हूं उसका हिस्सा है। – Pablo

उत्तर

20

Django 1.7 में माइग्रेशन पेश किए गए थे; आप 1.5 का उपयोग कर रहे हैं।

यहां एक link to the docs explaining this है। यदि आप Django के पुराने संस्करण का उपयोग कर रहे हैं, तो South डेटा माइग्रेशन के लिए सबसे लोकप्रिय विकल्प है।


संपादित

तो Django बाकी फ्रेमवर्क त्रुटि उत्पन्न कर रहा है। अपनी दस्तावेज़ीकरण से:

The rest_framework.authtoken app includes both Django native migrations (for Django versions >1.7) and South migrations (for Django versions <1.7) that will create the authtoken table.

Note: From REST Framework v2.4.0 using South with Django <1.7 requires upgrading South v1.0+

आप upgrade South 0.8.4 के अपने संस्करण परे 1.0+ के लिए आवश्यक है।

+0

हालांकि यह सच है, माइग्रेशन आयात करना कभी नहीं किया जाना चाहिए। माइग्रेशन निष्पादित करने के लिए एक उपकरण है ('python manage.py makemigrations' और 'python manage.py माइग्रेट के माध्यम से)। यह आयात करने के लिए एक पैकेज नहीं है। – aliteralmind

+0

@aliteralmind मैं पूरी तरह से सहमत हूं। मैंने माइग्रेशन आयात करने के लिए वकालत नहीं की :-) कहा जा रहा है कि, 'माइग्रेशन' आयात करने से Django 1.7 में कोई त्रुटि नहीं आती है। – sgarza62

+1

मैं इसे समझता हूं। आयात यह मेरे द्वारा बनाई गई मधुमक्खी नहीं है, यह उस फ़ाइल पर शामिल है जिसे मैं माइग्रेट करने का प्रयास कर रहा हूं। यह rest_framework.authtoken कोड है। – Pablo

0

सबसे पहले, आप कभी भी आयात नहीं करते हैं। यह आयात करने के लिए एक मॉड्यूल नहीं है, यह निष्पादित करने के लिए एक कमांड उपकरण है।

दूसरा, माइग्रेशन को 1.7 संस्करण में Django से पेश किया गया था और आप कहते हैं कि आप 1.5 का उपयोग कर रहे हैं ताकि आप इसका उपयोग नहीं कर सकें।

Django 1.7 से पहले, लोग दक्षिण के साथ काम करते थे क्योंकि दक्षिण आपको डेटाबेस में माइग्रेशन करने की क्षमता देता है। Django 1.7 के साथ आपको अब दक्षिण की आवश्यकता नहीं है क्योंकि माइग्रेशन पहले से ही Django में शामिल हैं। दूसरे शब्दों में, दक्षिण को संस्करण 1.7 में डीजेगो में शामिल किया गया था। https://docs.djangoproject.com/en/1.7/topics/migrations/

वे समझाने कि वे Django में प्रवास करते हैं शामिल:

इस लिंक पर एक नजर डालें।

दरअसल, दक्षिण का अंतिम संस्करण संस्करण 1.0 है और उन्होंने घोषणा की कि वे अधिक संस्करण जारी नहीं करेंगे क्योंकि वे Django 1.7 संस्करण पर काम कर रहे हैं जहां दक्षिण शामिल था। वे वर्तमान संस्करण का समर्थन करेंगे लेकिन वे और अधिक सुविधाएं नहीं जोड़ेंगे।

इस लिंक पर एक नज़र डालें: http://south.readthedocs.org/en/latest/releasenotes/1.0.html

वे समझाने कि 1.0 दक्षिण का अंतिम प्रमुख रिलीज है, क्योंकि वे Django 1.7 माइग्रेशन पर काम कर रहे हैं।

1

मुझे लगता है कि ओपी ने लिपि लिखने वाली स्क्रिप्ट में माइग्रेशन आयात नहीं किया था, स्कीममैरेशन द्वारा बनाई गई स्वचालित स्क्रिप्ट में से एक समस्या का कारण बन सकती है।

यह त्रुटि अचानक मेरे लिए दिखाई दे रही है जहां माइग्रेशन पहले काम कर चुके थे, और मैंने पाया कि यह Django == 1.6.1 और दक्षिण == 0.8.4 के संस्करणों के साथ नहीं था, लेकिन मेरे खोल को उलझन में जिसके रूप में मैं वर्चुअलenv का उपयोग कर रहा था। मैंने एक वर्चुअल वातावरण को निष्क्रिय करने के साथ छोड़ दिया था और "वर्कन" के साथ एक और शुरू किया था और फ़ील्ड का नाम बदलने के लिए एक स्कीममैरेशन चलाया था। जब मैं भाग गया ./manage माइग्रेट, मुझे त्रुटि मिली। मैंने खोल छोड़ दिया और फिर वर्चुअलएन्वायरमेंट शुरू किया, और सबकुछ ठीक था।

संबंधित मुद्दे