Django 1.7 - परिवर्तन का पता नहीं लगाने वाले makemigrations


140

जैसा कि शीर्षक कहता है, मैं काम करने के लिए माइग्रेशन प्राप्त नहीं कर सकता।

ऐप मूल रूप से 1.6 से कम था, इसलिए मैं समझता हूं कि शुरू में माइग्रेशन नहीं होगा, और वास्तव में अगर मैं चला तो python manage.py migrateमुझे मिल जाएगा:

Operations to perform:
  Synchronize unmigrated apps: myapp
  Apply all migrations: admin, contenttypes, auth, sessions
Synchronizing apps without migrations:
  Creating tables...
  Installing custom SQL...
  Installing indexes...
Running migrations:
  No migrations to apply.

अगर मैं किसी भी मॉडल में बदलाव करता हूं myapp, तो यह अभी भी उम्मीद के मुताबिक, बिना बताए कहता है।

लेकिन अगर मैं दौड़ता python manage.py makemigrations myappहूँ तो मुझे :

No changes detected in app 'myapp'

इस बात से कोई फर्क नहीं पड़ता कि मैं क्या या कैसे कमांड चलाता हूं, यह कभी भी ऐप को बदलाव के रूप में नहीं पहचानता है, न ही यह ऐप में कोई माइग्रेशन फाइल जोड़ रहा है।

क्या किसी ऐप को माइग्रेशन पर बाध्य करने और अनिवार्य रूप से कहने का कोई तरीका है "यह मेरा आधार है" या कुछ के साथ काम करने के लिए? या क्या मैं कुछ न कुछ भूल रहा हूं?

मेरा डेटाबेस एक PostgreSQL एक है अगर वह बिल्कुल मदद करता है।


समाधान की पेशकश मेरे लिए काम नहीं की तो यहाँ मेरा समाधान है अगर किसी को भी इसी समस्या का सामना करना पड़ता है! 1. सभी एप्लिकेशन के तहत माइग्रेशन फ़ाइलों को हटाएं। डेटाबेस को हटाएं और इसे फिर से बनाएं। 3. रनिंग मिमिग्रेशन और माइग्रेट करें PS पहले चरण 1 और 3 का प्रयास करें। यदि अभी भी कोई त्रुटि है, तो चरण 1-3 करें।
अमोरसो

जवाबों:


187

यदि आप django 1.6 में मौजूद किसी मौजूदा ऐप से बदल रहे हैं, तो आपको दस्तावेज़ में सूचीबद्ध एक पूर्व-चरण (जैसा कि मुझे पता चला है) करने की आवश्यकता है:

python manage.py makemigrations your_app_label

दस्तावेज़ीकरण यह स्पष्ट नहीं करता है कि आपको एप्लिकेशन लेबल को कमांड में जोड़ने की आवश्यकता है, क्योंकि पहली चीज python manage.py makemigrationsजो आपको यह करने के लिए कहती है जो विफल हो जाएगी। प्रारंभिक माइग्रेशन तब किया जाता है जब आप अपने ऐप को संस्करण 1.7 में बनाते हैं, लेकिन यदि आप 1.6 से आते हैं तो इसे नहीं किया जाएगा। देखें 'क्षुधा को जोड़ना प्रवास' अधिक जानकारी के लिए दस्तावेज में।


1
Django 1.6 से आने वाले लोगों के लिए अच्छा जवाब! धन्यवाद!
डेविड डी।

1
अगर मेरे पास एक से अधिक ऐप हैं तो क्या होगा? क्या मुझे python manage.py makemigrations APP_LABELहर एक के लिए होना चाहिए ?
एल्स्टन

1
Django 1.9 के तहत यहां और मेरे ऐप के साथ बनाया गया था ./manage.py startapp, लेकिन मुझे अभी भी लेबल का
अधिकतम

50

यह निम्नलिखित कारणों से हो सकता है:

  1. आपने एप्लिकेशन को INSTALLED_APPSसूची में शामिल नहीं किया है settings.py (आपको ऐप फ़ोल्डर में मौजूद एप्लिकेशन फ़ोल्डर में App.py में AppConfig के उपवर्ग में या तो ऐप का नाम या डॉटेड पथ जोड़ना होगा, जो आपके द्वारा उपयोग किए जा रहे django के संस्करण पर निर्भर करता है)। प्रलेखन देखें: INSTALLED_APPS
  2. आपके पास migrationsउन ऐप्स के अंदर फ़ोल्डर नहीं है । (समाधान: बस वह फ़ोल्डर बनाएं)।
  3. आपके पास उन ऐप्स के फ़ोल्डर में __init__.pyफ़ाइल नहीं है migrations। (समाधान: __init__.py नाम से एक खाली फ़ाइल बनाएं )
  4. आपके पास __init__.pyऐप फ़ोल्डर के अंदर कोई फ़ाइल नहीं है । (समाधान: __init__.py नाम से एक खाली फ़ाइल बनाएं )
  5. आपके पास models.pyऐप में कोई फ़ाइल नहीं है
  6. आपका पायथन वर्ग (माना जाता है कि एक मॉडल होना) models.pyविरासत में नहीं हैdjango.db.models.Model
  7. आप मॉडल की परिभाषा में कुछ शब्दार्थिक गलती करते हैं models.py

नोट: फ़ाइल migrationsमें फ़ोल्डर जोड़ने के लिए एक सामान्य गलती है .gitignore। जब दूरस्थ रेपो से क्लोन किया जाता है, तो स्थानीय रेपो में migrationsफ़ोल्डर और / या __init__.pyफाइलें गायब हो जाएंगी। यह समस्या का कारण बनता है।

मैं निम्नलिखित लाइनों को .gitignoreफ़ाइल में जोड़कर gitignore माइग्रेशन फ़ाइलों का सुझाव देता हूं

*/migrations/*
!*/migrations/__init__.py

1
मैं अपने प्रोजेक्ट और माइग्रेशन तो मैं माइग्रेशन निदेशक जोड़ने के लिए किया था तो मैं जोड़ा फ़ोल्डर रेपो को धक्का दे नहीं कर रहा था क्लोन था init .py और मैं माइग्रेशन बनाने के लिए कर रहा था। आप के लिए धन्यवाद
जुनैद

मैंने अपनी / माइग्रेशन फ़ोल्डर की सामग्री को एक प्रोजेक्ट पर "रीसेट" करने के लिए हटा दिया था जिसे मैंने अभी तक तैनात नहीं किया था। मैंने अनजाने __init__.pyमें माइग्रेशन के साथ फ़ोल्डर को हटा दिया ।
सेठ

यह मेरे लिए किया था .... You don't have __init__.py file inside migrations folder of those apps. (Solution: Just create an empty file with name __init__.py)और यह फ़ाइलों को जोड़कर हुआ था.gitignore
lukik

1
माइग्रेशन फ़ोल्डर में init .py फ़ाइल इतनी महत्वपूर्ण क्यों है? माइग्रेशन बनाने के लिए? इस तर्क के लिए मैं कहां तक ​​खुदाई कर सकता हूं?
निमिष बंसल

1
@ निमिशबंसल पायथन 3.3 __init__.pyफ़ाइल को एक अजगर पैकेज के रूप में व्यवहार करने के लिए एक निर्देशिका के अंदर आवश्यक है। इसे देखें
मोहम्मद शरीफ C

29

ठीक है, ऐसा लगता है कि मैं एक स्पष्ट कदम से चूक गया, लेकिन किसी अन्य के साथ भी ऐसा करने की स्थिति में यह पोस्ट करना।

1.7 में अपग्रेड करते समय, मेरे मॉडल अप्रबंधित हो गए ( managed = False) - मैंने उन्हें Trueपहले की तरह किया था, लेकिन लगता है कि यह उल्टा हो गया।

उस लाइन को हटाना (डिफ़ॉल्ट रूप से सत्य) और फिर makemigrationsतुरंत चलने से एक माइग्रेशन मॉड्यूल बना और अब यह काम कर रहा है। makemigrationsअप्रबंधित तालिकाओं पर काम नहीं करेगा (जो कि स्पष्ट है)


4
कृपया स्पष्ट करें- आपने "प्रबंधित = गलत" कहां / बदल दिया? मैं एक ही मुद्दा रहा हूँ
Ycon

1
मेरे पास अब वह कोड नहीं है, लेकिन मुझे लगता है कि अगर मुझे सही याद है तो मैं क्लास की प्रॉपर्टी के रूप में सोचता हूं।
TyrantWave

1
अच्छी बात। ध्यान दें कि manage.py inspectdbप्रबंधन = गलत जोड़ता है! यदि आप विरासत डेटाबेस आयात करते हैं तो आपको इसे सावधानीपूर्वक ट्यून करना चाहिए!
एलेसेंड्रो डेंटेला

@ टायरवॉव, आपने मेरा दिन बचाया। बहुत बहुत धन्यवाद।
उत्कर्ष शर्मा

सुनिश्चित करें कि आपका app_labelसमान है
Luv33preet

19

मेरा समाधान यहां कवर नहीं किया गया था इसलिए मैं इसे पोस्ट कर रहा हूं। मैं syncdbएक परियोजना के लिए उपयोग कर रहा था - बस इसे प्राप्त करने और चलाने के लिए। फिर जब मैंने Django के माइग्रेशन का उपयोग करना शुरू करने की कोशिश की, तो पहले तो उन्होंने कहा कि यह 'ओके' है, लेकिन डेटाबेस के लिए कुछ भी नहीं हो रहा था।

मेरा समाधान सिर्फ मेरे ऐप के लिए सभी माइग्रेशन फ़ाइलों को हटाना था, साथ हीdjango_migrations तालिका में ऐप के माइग्रेशन के लिए डेटाबेस रिकॉर्ड भी ।

तब मैंने सिर्फ एक प्रारंभिक प्रवास किया था:

./manage.py makemigrations my_app

के बाद:

./manage.py migrate my_app

अब मैं बिना किसी समस्या के पलायन कर सकता हूं।


FYI करें: यह महत्वपूर्ण है कि वह यहाँ कहता है, "फाइलें, साथ ही डेटाबेस रिकॉर्ड।" यदि आप डेटाबेस रिकॉर्ड को हटाते हैं, लेकिन फाइलों को भी __init.py__नहीं
माइक रॉबिन्सन

15

@Furins से सहमत हैं। यदि सब कुछ क्रम में लगता है और फिर भी यह समस्या उत्पन्न होती है, तो चेकआउट करें यदि किसी गुण के समान गुण के साथ कोई संपत्ति विधि है जिसे आप मॉडल वर्ग में जोड़ने का प्रयास कर रहे हैं।

  1. आपके द्वारा जोड़े जा रहे विशेषता के समान नाम के साथ विधि निकालें।
  2. प्रबंध थिंकपैड makemigrations my_app
  3. manage.py माइग्रेट करें my_app
  4. विधियों को वापस जोड़ें।

11

यह बनाने के लिए एक बेवकूफ गलती की तरह है, लेकिन मॉडल वर्ग में क्षेत्र घोषणा रेखा के अंत में एक अतिरिक्त अल्पविराम होने से, लाइन का कोई प्रभाव नहीं पड़ता है।

यह तब होता है जब आप कॉपी पेस्ट पेस्ट करते हैं। माइग्रेशन से, जिसे स्वयं एक सरणी के रूप में परिभाषित किया गया है।

हालांकि शायद यह किसी की मदद करेगा :-)


1
आपकी टिप्पणी से मुझे अपना मुद्दा खोजने में मदद मिली! मेरे पास एक विकल्प सूची में अंतिम विकल्प के अंत में एक अल्पविराम नहीं था..बस में Django बहुत ही मार्मिक है।
मैक्सिम

1
@ मोम: यह आपकी समस्या का कारण नहीं था: अंत में अल्पविराम के बिना एक सूची अभी भी एक सूची है। एक और मामला टुपल्स है: यदि आपके पास एक टपल में केवल 1 तत्व है, तो आपको इसके बाद अल्पविराम की आवश्यकता है।
ब्लूफ़ास्ट

दोस्त है कि मुझे बहुत समय बचा लिया! @dangonfast: मॉडल परिभाषा में, यह वास्तव में एक समस्या है।
MrE

11

हो सकता है कि मुझे बहुत देर हो गई हो लेकिन क्या आपने migrationsअपने ऐप में एक __init__.pyफ़ाइल के साथ एक फ़ोल्डर रखने की कोशिश की है ?


1
यदि आपके पास यह "makemigrations" है तो ऐप के लिए माइग्रेशन बनाएगा। अन्यथा यह आपको makemigrations app_name (जो इन फ़ाइल को बनाता है) चलाने की आवश्यकता होगी
स्कॉट वॉरेन

7

शायद यह किसी की मदद करेगा। मैं एक नेस्टेड ऐप का उपयोग कर रहा था। Project.appname और मेरे पास वास्तव में INSTALLED_APPS में प्रोजेक्ट और project.appname था। INSTALLED_APPS से प्रोजेक्ट हटाने से परिवर्तनों का पता लगाया जा सकता है।


7

Django 1.7 में cdvv7788 माइग्रेशन द्वारा इस स्टैकओवरफ़्लो पोस्ट पर जवाब दिया गया है

यदि यह पहली बार है जब आप उस ऐप को माइग्रेट कर रहे हैं, जिसका आपको उपयोग करना है:

एक बार ऐसा करने के बाद, आप ऐसा कर सकते हैं:

प्रबंधित करें माइग्रेट करें यदि आपके पास डेटाबेस में आपका ऐप था, तो इसके मॉडल को संशोधित करें और इसके द्वारा आपके द्वारा अभी तक माइग्रेट किए गए बदलावों के अपडेट को अपडेट न करना। अपना मॉडल वापस अपने मूल रूप में बदलें, पहला कमांड चलाएं (ऐप नाम के साथ) और माइग्रेट करें ... यह नकली होगा। एक बार जब आप ऐसा करते हैं तो अपने मॉडल में परिवर्तन वापस लाते हैं, makemigrations चलाते हैं और फिर से पलायन करते हैं और इसे काम करना चाहिए।

मुझे ठीक वैसी ही परेशानी हो रही थी और ऊपर वाले ने पूरी तरह से काम किया।

मैंने अपने django ऐप को क्लाउड 9 में स्थानांतरित कर दिया था और किसी कारण से मैंने शुरुआती माइग्रेशन को कभी नहीं पकड़ा।


7

मेरे लिए काम करने के बाद:

  1. सेटिंग के लिए app का नाम सेटिंग्स में जोड़ें
  2. 'अजगर प्रबंधन थिंकपैड makemigrations' का उपयोग करें
  3. 'अजगर प्रबंधन थिंकपैड माइग्रेट' का उपयोग करें

मेरे लिए काम किया: पायथन 3.4, Django 1.10


6

मेरे जैसे लोग जिन्हें माइग्रेशन पसंद नहीं है, वे नीचे दिए गए चरणों का उपयोग कर सकते हैं।

  1. आप जो सिंक करना चाहते हैं उसे हटा दें।
  2. भागो python manage.py makemigrations app_labelआरंभिक माइग्रेशन के लिए।
  3. भागो python manage.py migrateतालिका बनाने परिवर्तन करने से पहले के लिए।
  4. उन परिवर्तनों को चिपकाएँ जिन्हें आप पहले चरण में हटा देते हैं।
  5. 2. और 3. चरण चलाएँ।

यदि आप इनमें से किसी भी चरण को भ्रमित करते हैं, तो माइग्रेशन फ़ाइलों को पढ़ें। अपने स्कीमा को सही करने या अवांछित फ़ाइलों को हटाने के लिए उन्हें बदलें लेकिन अगली माइग्रेशन फ़ाइल की निर्भरता भाग को बदलना न भूलें;)

मुझे उम्मीद है कि यह भविष्य में किसी की मदद करेगा।


5

आप सूची settings.pyमें जांच करना चाहते हैं INSTALLED_APPSऔर सुनिश्चित करें कि मॉडल वाले सभी एप्लिकेशन वहां सूचीबद्ध हैं।

makemigrationsप्रोजेक्ट फ़ोल्डर में रनिंग का मतलब है कि यह settings.pyप्रोजेक्ट के लिए शामिल सभी ऐप से संबंधित सभी तालिकाओं को अपडेट करेगा । एक बार जब आप इसे शामिल करते हैं, makemigrationsतो स्वचालित रूप से ऐप शामिल हो जाएगा (यह बहुत काम बचाता है ताकि आपको makemigrations app_nameअपने प्रोजेक्ट / साइट में हर ऐप के लिए दौड़ना न पड़े )।


5

यदि आपके पास एक विशिष्ट क्षेत्र है जिसे पहचानने से नहीं मिलता है: यदि आपके पास एक ही नाम वाली संपत्ति है, तो दो बार जांचें।

उदाहरण:

field = django.db.models.CharField(max_length=10, default = '', blank=True, null=True)

# ... later

@property
def field(self):
    pass

संपत्ति क्षेत्र की परिभाषा को "अधिलेखित" कर देगी ताकि परिवर्तनों को पहचान नहीं मिलेगी makemigrations


एक संबंधित बम्पर एक विकृत क्षेत्र है जो अभी भी मान्य / चेक से बच जाता है। मैंने परिभाषित किया hourly_rate = models.DecimalField(अनुगामी '()') को परिभाषित करना और यह चुपचाप विफल रहा।
ऋषि

5

सुनिश्चित करें कि आपका मॉडल नहीं है abstract। मैंने वास्तव में वह गलती की थी और इसमें कुछ समय लगा, इसलिए मैंने सोचा कि मैं इसे पोस्ट कर दूंगा।


4

इस उत्तर को जोड़ना क्योंकि केवल इस पद्धति ने मेरी मदद की।

मैंने migrationsफ़ोल्डर चलाने makemigrationsऔर हटा दिया migrate
इसने अभी भी कहा: कोई माइग्रेशन लागू करने के लिए नहीं।

मैं migrateफ़ोल्डर में गया और अंतिम बनाई गई फ़ाइल खोली,
उस माइग्रेशन पर टिप्पणी करें जो मैं चाहता था (यह पता चला था और वहां प्रवेश किया था)
और migrateफिर से चलाएं ।

यह मूल रूप से माइग्रेशन फ़ाइल को मैन्युअल रूप से संपादित करता है।
इसे केवल तभी करें जब आप फ़ाइल सामग्री को समझते हैं।


1
आपको बहुत - बहुत धन्यवाद! इसने मदद की
शारलेस 512

3

क्या आपने schemamigration my_app --initialपुराने माइग्रेशन फ़ोल्डर का नाम बदलने के बाद उपयोग किया था ? कोशिश करो। शायद काम कर जाये। यदि नहीं - डेटाबेस को फिर से बनाने और syncdb + माइग्रेट करने का प्रयास करें। इसने मेरे लिए काम किया ...


10
कोई आदेश schemamigrationमौजूद नहीं है - मुझे लगता है कि यह दक्षिण का हिस्सा है? मेरे पास वर्तमान में कोई माइग्रेशन फ़ोल्डर नहीं है। मेरे models.pyऔर पुनर्जन्म inspectdbको हटाने से कुछ भी नहीं लगता था।
तिर्यंतवेव

2
schemamigrationसाउथ से था। makemigrationsइसका प्रतिस्थापन है।
क्रेग लैंबेंज

2
यह अभी भी मान्य है। लेकिन यह बदल गयाmakemigrations --empty
Iulius कर्ट

2

समान समस्या थी सुनिश्चित करें कि आपने जो भी मॉडल मॉडर्म्सडैम में परिभाषित किया है, उसके लिए आपके पास मॉडल होना चाहिए। मॉडल वर्ग।

class Product(models.Model):
    title = models.TextField()
    description = models.TextField()
    price = models.TextField()

1

मैं दो बार makemigrations चलाने और अजीब व्यवहार के सभी प्रकार के साथ एक ही समस्या थी। यह समस्या की जड़ थी कि मैं अपने मॉडल में डिफ़ॉल्ट तिथियों को सेट करने के लिए एक फ़ंक्शन का उपयोग कर रहा था, इसलिए माइग्रेशन के चलने पर हर बार माइग्रेशन एक परिवर्तन का पता लगा रहा था। इस सवाल के जवाब ने मुझे सही रास्ते पर ला खड़ा किया : डेट फील्ड को री-क्रिएट करने के लिए makemigrations से बचें


1

मैंने हाल ही में Django को 1.6 से 1.8 में अपग्रेड किया था और उनके लिए कुछ ऐप और माइग्रेशन थे। मैंने दक्षिण का उपयोग किया और schemamigrationsDjango 1.6 में माइग्रेशन बनाने के लिए, जिसे Django 1.8 में गिरा दिया गया।

जब मैंने नवीनीकरण के बाद नए मॉडल जोड़े, तो makemigrationsकमांड किसी भी बदलाव का पता नहीं लगा रही थी। और फिर मैंने @drojf (1 उत्तर) द्वारा सुझाए गए समाधान की कोशिश की, यह ठीक काम किया, लेकिन नकली प्रारंभिक माइग्रेशन ( python manage.py --fake-initial) लागू करने में विफल रहा । मैं ऐसा कर रहा था क्योंकि मेरी टेबल (पुरानी टेबल) पहले से ही बनाई गई थीं।

अंत में इसने मेरे लिए काम किया, नए मॉडल (या मॉडल परिवर्तन) को मॉडल manage.pyथिंक से हटा दिया और फिर सभी ऐप्स के माइग्रेशन फ़ोल्डर को हटाना (या नाम बदलना) और फिर सभी ऐप के लिए पायथन मेमेनिग्रेशन चलाना पड़ा python manage.py migrate --fake-initial। इसने एकदम जादू की तरह काम किया। एक बार प्रारंभिक माइग्रेशन सभी ऐप्स के लिए बनाया जाता है और नकली प्रारंभिक माइग्रेट किया जाता है, फिर नए मॉडल जोड़े makemigrationsजाते हैं और उस ऐप की नियमित प्रक्रिया का पालन करते हैं और माइग्रेट करते हैं। अब परिवर्तनों का पता चला और सब कुछ ठीक हो गया।

मैंने इसे यहाँ साझा करने के बारे में सोचा, अगर किसी को एक ही समस्या का सामना करना पड़ता है ( schemamigrationsअपने ऐप्स के लिए दक्षिण में), तो यह उनकी मदद कर सकता है :)


1

शायद जो किसी की मदद कर सकता है, मुझे वही समस्या थी।

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

मैंने इस कदम का अनुसरण किया:

  1. मैंने बनाया .\manage.py makemigrations app
  2. मैंने अमल किया .\manage.py migrate
  3. मैंने अपनी दोनों मेजें मिटा दीं models.py
  4. मैंने सीरियल टेबल और व्यू क्लास से अपनी टेबल के सभी संदर्भ मिटा दिए।
  5. मैंने स्टेप निष्पादित किया 1और 2
  6. मैंने अपने परिवर्तनों को अभी प्राप्त किया है models.py
  7. मैंने फिर कदम बढ़ाया 5
  8. मैंने अपने सभी परिवर्तनों को बहाल कर दिया।

यदि आप Pycharm के साथ काम कर रहे हैं, तो स्थानीय इतिहास बहुत मददगार है।


1

शायद यह किसी की मदद करेगा।

मैंने अपने को हटा दिया है models.pyऔर कथन makemigrationsबनाने की अपेक्षा की है DeleteModel

*.pycफ़ाइलों को हटाने के लिए याद रखें !


1
./manage makemigrations
./manage migrate

माइग्रेशन डीबी में परिवर्तन को ट्रैक करते हैं, इसलिए यदि आप अप्रबंधित से प्रबंधित में बदल रहे हैं, तो आपको यह सुनिश्चित करने की आवश्यकता होगी कि आप जिस डेटाबेस से काम कर रहे हैं, उससे संबंधित डेट डेटाबेस तालिका अद्यतित है।

यदि आप अभी भी देव विधा में हैं, तो मैंने व्यक्तिगत रूप से अपनी IDE के साथ ही अपने मॉडल से संबंधित django_migrations तालिका में माइग्रेशन फ़ाइलों को हटाने का फैसला किया है और उपरोक्त आदेश को फिर से चलाएँ।

रिमेंबर: यदि आपके पास एक माइग्रेशन है जो आपके IDE में _001 और आपके डेटाबेस में _003 के साथ समाप्त होता है। Django केवल तभी देखेगा जब आपके पास कुछ भी अपडेट करने के लिए _004 के साथ माइग्रेशन समाप्त हो।

2 (कोड और डीबी माइग्रेशन) जुड़े हुए हैं और मिलकर काम करते हैं।

खुश कोडिंग।


1
  1. आप जो सिंक करना चाहते हैं उसे हटा दें।
  2. प्रारंभिक माइग्रेशन के लिए python manage.py makemigrations app_label चलाएँ।
  3. परिवर्तन करने से पहले तालिकाओं को प्रबंधित करने के लिए python manage.py चलाएँ।
  4. उन परिवर्तनों को चिपकाएँ जिन्हें आप पहले चरण में हटा देते हैं।
  5. 2. और 3. चरण चलाएँ

0

इस उत्तर को जोड़ा क्योंकि ऊपर उपलब्ध अन्य कोई भी मेरे लिए काम नहीं करता है।

मेरे मामले में कुछ और भी अजीब हो रहा था ( Django 1.7 संस्करण ), मेरे मॉडल-थ्रू में मेरी फ़ाइल के अंत में एक "अतिरिक्त" लाइन थी (यह एक रिक्त लाइन थी) और जब मैंने python manage.py makemigrationsकमांड निष्पादित किया तो परिणाम था: "कोई परिवर्तन नहीं पाया गया"।

इसे ठीक करने के लिए मैंने इस "रिक्त लाइन" को हटा दिया , जो मेरे मॉडल-थ्रेड फ़ाइल के अंत में थी और मैंने फिर से कमांड को चलाया, सब कुछ ठीक हो गया और मॉडल-थ्रू में किए गए सभी परिवर्तनों का पता चला!


अच्छी तरह से django 2.0 + में उस खाली लाइन की आवश्यकता है जो मुझे विश्वास है, मुझे जो करना था उसके विपरीत करना था
सुमित कुमार साहा

@SumitKumarSaha haha ​​मैं वर्तमान में Django 1.7 संस्करण का उपयोग कर रहा हूं और यह रिक्त पंक्ति माइग्रेशन त्रुटि को हल करने के लिए सब कुछ करने की कोशिश कर रहे 2 घंटे का कारण था। सुमित को शेयर करने के लिए धन्यवाद। आपका दिन शुभ हो
हुस्की

0

आपको नीचे दिए गए आदेश का उपयोग करके प्रारंभिक माइग्रेशन को नकली करने की आवश्यकता हो सकती है

python manage.py migrate --fake-initial

0

सबसे पहले यह समाधान उन लोगों के लिए लागू होता है जो हरोकू सर्वर पर तैनाती के दौरान एक ही मुद्दे का सामना कर रहे हैं, मैं एक ही मुद्दे का सामना कर रहा था।

परिनियोजित करने के लिए, एक अनिवार्य कदम है जो कि सेटिंग्स ऑरिजिनल फ़ाइल में django_heroku.settings (स्थानीय लोगों ()) को जोड़ना है।

परिवर्तन: जब मैंने उपरोक्त लाइन को django_heroku.settings (स्थानीय लोगों (), डेटाबेस = गलत) में बदल दिया, तो इसने त्रुटिपूर्ण रूप से काम किया।


0

मेरे मामले में मुझे अपने मॉडल को _ init _.py मॉडल मॉडल की फ़ाइल में जोड़ने की आवश्यकता थी जहां मेरा मॉडल परिभाषित किया गया था:

from myapp.models.mymodel import MyModel

-1

मेरे 2 सी को जोड़ना, क्योंकि इनमें से किसी भी समाधान ने मेरे लिए काम नहीं किया, लेकिन यह किया ...

मैंने manage.py squashmigrationsपुराने माइग्रेशन (django.migrations डेटाबेस टेबल में फाइल और लाइन दोनों) को अभी-अभी चलाया और हटाया था ।

यह अंतिम माइग्रेशन फ़ाइल में इस तरह एक पंक्ति छोड़ गया है:

replaces = [(b'my_app', '0006_auto_20170713_1735'), (b'my_app', '0007_auto_20170713_2003'), (b'my_app', '0008_auto_20170713_2004')]

यह स्पष्ट रूप से Django को भ्रमित करता है और अजीब व्यवहार का कारण बनता है: रनिंग manage.py makemigrations my_appप्रारंभिक माइग्रेशन को फिर से बनाएगा जैसे कि कोई भी अस्तित्व में न हो। replaces...लाइन को हटाने से समस्या ठीक हो गई!


-1

python manage.py makemigrations खातों को 'खातों' के लिए माइग्रेशन: खाते \ migrations \ 0001_initial.py - मॉडल ग्राहक बनाएँ - मॉडल टैग बनाएँ - मॉडल उत्पाद बनाएँ - मॉडल ऑर्डर बनाएँ

नोट: यहाँ "खाते" मेरा ऐप नाम है

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.