Django - makemigrations - कोई परिवर्तन नहीं पाया गया


138

मैं makemigrations कमांड का उपयोग करके मौजूदा ऐप के भीतर माइग्रेशन बनाने की कोशिश कर रहा था, लेकिन यह "कोई परिवर्तन नहीं पाया गया" आउटपुट करता है।

आमतौर पर मैं startappकमांड का उपयोग करके नए एप्लिकेशन बनाता हूं लेकिन जब मैंने इसे बनाया था तो इस ऐप के लिए इसका उपयोग नहीं किया था।

डिबगिंग के बाद, मैंने पाया कि यह माइग्रेशन नहीं बना रहा है क्योंकि migrationsपैकेज / फ़ोल्डर एक ऐप से गायब है।

क्या यह बेहतर होगा यदि यह फ़ोल्डर बनाता है अगर यह नहीं है या मैं कुछ याद कर रहा हूं?


13
क्या आपके पास अपना ऐप INSTALLED_APPS में जोड़ा गया है?
wolendranh

6
हां यह इंस्टॉल किए गए ऐप में है, पहली बार उपयोग करने के लिए बेहतर है makemigrations <myapp>जैसा कि अलासैदर ने भी बताया।
दिलराज

1
Y

'makemigrations' काम नहीं किया। 'makemigrations <myapp>' काम किया
असीम

जवाबों:


266

किसी ऐप के लिए प्रारंभिक माइग्रेशन बनाने के लिए, makemigrationsऐप नाम को चलाएं और निर्दिष्ट करें। माइग्रेशन फ़ोल्डर बनाया जाएगा।

./manage.py makemigrations <myapp>

आपका ऐप INSTALLED_APPSपहले (सेटिंग्स के अंदर) को शामिल किया जाना चाहिए ।


15
किसी भी विचार क्यों वे <कभी> हमें एप्लिकेशन निर्दिष्ट करने के लिए मजबूर करते हैं?
मजाज़

40
अगर ऐप में migrationsफ़ोल्डर नहीं है तो @maazza को आपको ऐप का नाम बताना होगा । यह तब हो सकता है यदि आपने मैन्युअल रूप से ऐप बनाया है, या आपने Django के पुराने संस्करण से अपग्रेड किया है जिसमें माइग्रेशन नहीं थे।
अलास्देयर

13
@maazza वास्तव में आपको __init__.pyऐप में 'माइग्रेशन' नाम के एक अजगर पैकेज (के साथ ) की आवश्यकता है ।
जिबिन

3
कुछ ऐसा लगता है कि Django को स्वचालित रूप से संभालना चाहिए।
द्वंद्व_

1
@duality_ यह डिज़ाइन द्वारा है - Django यह नहीं मानता है कि आप अपने ऐप के लिए माइग्रेशन चाहते हैं। यदि यह सभी ऐप्स के लिए माइग्रेशन बनाता है, तो आपके द्वारा चलाए जाने पर त्रुटियां हो सकती हैं migrate
अलसदेयर

49

मेरी समस्या (और इसलिए समाधान) अभी तक ऊपर वर्णित लोगों से अलग थी।

मैं models.pyफ़ाइल का उपयोग नहीं कर रहा था , लेकिन एक modelsनिर्देशिका बनाई और my_model.pyवहाँ फ़ाइल बनाई , जहाँ मैंने अपना मॉडल डाला। Django मेरा मॉडल नहीं ढूंढ सका, इसलिए उसने लिखा कि आवेदन करने के लिए कोई माइग्रेशन नहीं हैं।

मेरा समाधान था: my_app/models/__init__.pyफ़ाइल में मैंने यह पंक्ति जोड़ी: from .my_model import MyModel


यह मेरे लिए भी समाधान के लिए खुश था, लेकिन मुझे समझ नहीं आता कि यह क्यों है। क्या किसी के पास कुछ अंतर्दृष्टि है जिसके कारण यह हो सकता है?
पॉल 'टी हाउट

Django में आपके मॉडल देखने के लिए एक डिफ़ॉल्ट पथ है। यदि प्रोजेक्ट संरचना अलग है, और मॉडल सामान्य स्थान पर नहीं हैं, तो उन्हें वहां आयात करने की आवश्यकता है।
करीना क्लिंकविवि ė

@ KarinaKlinkevičiūtina अगर मुझे ऐसे मॉडलों को हटाने की आवश्यकता है तो क्या होगा?
डेनियल मशकिन

@DaniilMashkin मुझे लगता है कि आपको आयात को भी हटाने की आवश्यकता होगी। यह आपकी परियोजना को संरचित करने के तरीकों में से एक है (केवल एक ही नहीं) और आपको इसके साथ आने वाले अतिरिक्त कार्यों से निपटना होगा यदि आप इसे चुनते हैं :)
Karina Klinkevičiūtė

1
मैंने मॉडल के लिए "क्लासिक" वास्तुकला का उपयोग किया, फिर मैं "मॉडल फ़ोल्डर" वास्तुकला में स्थानांतरित हो गया, और मेरे मौजूदा मॉडल पर किसी भी माइग्रेशन का अभी भी पता लगाया गया है। हालांकि, अब, एक नया मॉडल बनाते समय , मेरे पास यह मुद्दा है। आपका समाधान अच्छी तरह से काम करता है, लेकिन इसने मेरे कोडबेस को असंगत बना दिया है क्योंकि कभी-कभी आयात होता है, कभी-कभी नहीं। शायद कोई बेहतर उपाय है। मुझे लगता है कि Django को नए मॉडल खोजने की कोशिश करते समय देखने के लिए फ़ोल्डर्स की एक सूची के साथ एक सेटिंग्स का प्रस्ताव देना चाहिए।
डेविड डी।

43

Django के makemigrationsआदेश के दौरान माइग्रेट करने के लिए क्या नहीं पता लगाने के लिए कई संभावित कारण हैं ।

  1. माइग्रेशन फ़ोल्डर आपको अपने ऐप में माइग्रेशन पैकेज की आवश्यकता है।
  2. INSTALLED_APPS आपको अपने ऐप को INSTALLED_APPS.dict में निर्दिष्ट करने की आवश्यकता है
  3. makemigrations -v 3शब्दशः क्रिया के लिए चलने से शुरू होता है । यह समस्या पर कुछ प्रकाश डाल सकता है।
  4. पूर्ण पथ में INSTALLED_APPSयह apply.apps.MyAppConfig 'पूर्ण मॉड्यूल एप्लिकेशन config पथ निर्दिष्ट करने के लिए सिफारिश की है
  5. - सेटिंग्स आप सुनिश्चित कर सकते हैं कि सही सेटिंग्स फ़ाइल सेट है:manage.py makemigrations --settings mysite.settings
  6. स्पष्ट रूप से ऐप नाम निर्दिष्ट करेंmanage.py makemigrations myapp - इसमें ऐप का नाम डालें - जो अकेले ऐप के लिए माइग्रेशन को कम करता है और आपको समस्या को अलग करने में मदद करता है।
  7. मॉडल मेटा चेक app_labelआपके मॉडल मेटा में आपका अधिकार है

  8. डीबग django डीबग django कोर स्क्रिप्ट। makemigrations कमांड बहुत सीधे आगे है। यहाँ यह कैसे pycharm में करने के लिए है । अपनी स्क्रिप्ट परिभाषा उसके अनुसार बदल (पूर्व: makemigrations --traceback myapp)

एकाधिक डेटाबेस:

  • डीबी राउटर जब django db राउटर के साथ काम करते हैं, तो राउटर क्लास (आपका कस्टम राउटर क्लास) को allow_syncdbविधि को लागू करने की आवश्यकता होती है।

makemigrations हमेशा मॉडल परिवर्तनों के लिए माइग्रेशन बनाता है, लेकिन अगर allow_migrate () गलत रिटर्न देता है,


1
समस्या के संबंध में कई परिदृश्यों को शामिल किया गया, स्वीकृत उत्तर होना चाहिए।
कृष

एक और संभावना: गलत नाम आयात किया जा रहा है, अर्थात खेतों के बजाय रूपों से एक क्षेत्र आयात करना, या मॉडल के बजाय रूपों से एक मॉडल आयात करना। एक उदाहरण: from recurrence.forms import RecurrenceFieldलेकिन यह होना चाहिए था from recurrence.fields import RecurrenceField
hlongmore

एक और कारण। सुनिश्चित करें कि मॉडल का उपयोग वेबसाइट के लिए एक मार्ग के भीतर किया जाता है (व्यवस्थापक या अन्यथा के माध्यम से)। " makemigrationsस्क्रिप्ट उन मॉडलों की तलाश करती है जो इससे जुड़ी हैं urls.py"। यहाँ पाया गया stackoverflow.com/questions/43093651/…
काइल

cmd उदाहरण:python manage.py makemigrations -v 3 <app_name>
चार्ली

जब मैं एक तालिका जोड़ता हूं, और फिर उसी समय इस नई तालिका में एक विदेशी कुंजी संदर्भ जोड़ता हूं। इसे 2 चरणों में विभाजित किया जाना है: पूर्व चरण: सेटिंग्स में INSTALLED_APPS जोड़ें। 1) नई तालिका बनाएं: अजगर प्रबंधन थिंकपैड makemigrations <app_name>; 2) विदेशी कुंजी जोड़ें: अजगर प्रबंधन ओरेकल मेमेरीग्रेशन
चार्ली Foreign

26

मैंने इस प्रश्न के कई उत्तर पढ़े हैं जो अक्सर केवल makemigrationsकुछ अन्य तरीकों से चलते हैं। लेकिन मेरे लिए, समस्या Metaमॉडल के उपवर्ग में थी।

मेरे पास एक ऐप कॉन्फिग है जो कहता है label = <app name>( apps.pyफ़ाइल में, बगल में models.py, views.pyआदि)। अगर किसी भी तरह से आपके मेटा क्लास में ऐप लेबल के समान लेबल नहीं होता है (उदाहरण के लिए क्योंकि आप एक से अधिक ऐप को कई लोगों में विभाजित कर रहे हैं), तो कोई भी परिवर्तन नहीं पता चला है (और जो भी सहायक त्रुटि संदेश नहीं है)। मेरे मॉडल वर्ग में अब मेरे पास है:

class ModelClassName(models.Model):

    class Meta:
        app_label = '<app name>' # <-- this label was wrong before.

    field_name = models.FloatField()
    ...

यहां Django 1.10 चल रहा है।


13

यह एक टिप्पणी है लेकिन शायद इसका जवाब होना चाहिए।

सुनिश्चित करें कि आपका एप्लिकेशन नाम सेटिंग में है। INSTALLED_APPSअन्यथा आप जो भी करते हैं वह माइग्रेशन नहीं चलाएगा।

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',

    'blog',
]

फिर भागो:

./manage.py makemigrations blog

लेकिन यह 'appname_modelname' के रूप में टेबल का नाम बनाता है, जब हम 'मैनेजमेडो माइग्रेट' कमांड चलाते हैं
डेनियल जावेद

तालिका नाम बदलने के लिए मॉडल मेटा विकल्प देखें
स्टीफन

11

मुझे यहाँ वर्णित एक और समस्या नहीं थी, जिसने मुझे पागल कर दिया।

class MyModel(models.Model):
    name = models.CharField(max_length=64, null=True)  # works
    language_code = models.CharField(max_length=2, default='en')  # works
    is_dumb = models.BooleanField(default=False),  # doesn't work

मेरे पास एक अनुगामी ',' एक पंक्ति में शायद कॉपी और पेस्ट से था। Is_dumb के साथ की रेखा './manage.py makemigrations' के साथ एक मॉडल माइग्रेशन नहीं बनाती है, लेकिन इसमें कोई त्रुटि नहीं है। 'हटाने के बाद,' यह उम्मीद के मुताबिक काम किया।

जब आप कॉपी और पेस्ट करते हैं तो सावधान रहें :-)


अनुगामी अल्पविराम कहीं और भी कीड़े पैदा कर सकता है; अल्पविराम बयान को एक तुच्छ बनाता है, इसलिए is_dumbयह बराबर है (models.BooleanField(default=False), )जो makemigrationsडेटाबेस कॉलम में परिवर्तित करना नहीं जानता है।
hlongmore

8

कभी-कभी ऐसा होता ./manage.py makemigrationsहै जब वह बेहतर होता है ./manage.py makemigrations <myapp>क्योंकि यह ऐप्स के बीच कुछ संघर्षों को संभाल सकता है।

वे अवसर चुपचाप घटित होते हैं और swearingखूंखार No changes detectedसंदेश के वास्तविक अर्थ को समझने में कई घंटे लगते हैं ।

इसलिए, यह निम्नलिखित आदेश का उपयोग करने के लिए एक बेहतर विकल्प है:

./manage.py makemigrations <myapp1> <myapp2> ... <myappN>


7

मैंने django के बाहर से एक तालिका की प्रतिलिपि बनाई थी और मेटा क्लास को "प्रबंधित = गलत" करने के लिए डिफ़ॉल्ट किया गया था। उदाहरण के लिए:

class Rssemailsubscription(models.Model):
    id = models.CharField(primary_key=True, max_length=36)
    ...
    area = models.FloatField('Area (Sq. KM)', null=True)

    class Meta:
        managed = False
        db_table = 'RSSEmailSubscription'

ट्रू में मैनजेड बदलकर, मेमेनिग्रेशन ने बदलाव लाने शुरू कर दिए।


4
  1. सुनिश्चित करें कि सेटिंग एफ़टीपी में आपका ऐप इंस्टॉल_ में उल्लिखित है
  2. सुनिश्चित करें कि आप मॉडल वर्ग मॉडल का विस्तार करते हैं

2

मैंने ऐसा करके उस समस्या को हल किया:

  1. "Db.sqlite3" फ़ाइल मिटाएँ। समस्या यह है कि आपका वर्तमान डेटा बेस मिट जाएगा, इसलिए आपको इसे फिर से बनाना होगा।
  2. अपने संपादित किए गए एप्लिकेशन के माइग्रेशन फ़ोल्डर के अंदर, अंतिम अपडेट की गई फ़ाइल को मिटा दें। याद रखें कि पहली बनाई गई फ़ाइल है: "0001_initial.py"। उदाहरण के लिए: मैंने एक नया वर्ग बनाया और इसे "makemigrations" और "माइग्रेट" प्रक्रिया द्वारा पंजीकृत किया, अब "0002_auto_etc.py" नामक एक नई फ़ाइल बनाई गई थी; इसे मिटाएं।
  3. " Pycache " फ़ोल्डर (माइग्रेशन फ़ोल्डर के अंदर) पर जाएं और "0002_auto_etc.pyc" फ़ाइल मिटा दें।
  4. अंत में, कंसोल पर जाएं और "python manage.py makemigrations" और "python manage.py migrate" का उपयोग करें।

2

मैं सही तर्क देना भूल गया:

class LineInOffice(models.Model):   # here
    addressOfOffice = models.CharField("Корхоная жош",max_length= 200)   #and here
    ...

में मॉडल और उसके बाद उस कष्टप्रद को छोड़ना शुरू कर दिया

ऐप 'myApp' में पाया गया कोई बदलाव नहीं


2

एक अन्य संभावित कारण यह है कि अगर आपके पास कुछ मॉडल किसी अन्य फ़ाइल में परिभाषित थे (पैकेज में नहीं) और उन्होंने कहीं और संदर्भित नहीं किया है।

मेरे लिए, बस (जहां नई फ़ाइल थी) from .graph_model import *को जोड़कर समस्या को ठीक किया गया।admin.pygraph_model.py


2

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

rm -r */migrations/*
rm db.sqlite3
python3 manage.py makemigrations
No changes detected

Whaat ??

मैंने गलती से सभी __init__.pyफाइलों को भी हटा दिया था :( - मेरे जाने के बाद सब कुछ फिर से काम कर रहा था:

touch ads1/migrations/__init__.py

मेरे प्रत्येक आवेदन के लिए फिर makemigrationsकाम किया।

यह पता चला है कि मैंने मैन्युअल रूप से एक और कॉपी करके एक नया एप्लिकेशन बनाया था और फ़ोल्डर __init__.pyमें डालना भूल गया था migrationsऔर मुझे यह बता दिया था कि सबकुछ जीत गया है - rm -rऊपर वर्णित एक के साथ इसे बदतर बनाने में मेरी अग्रणी ।

आशा है कि यह किसी को कुछ घंटों के लिए "कोई परिवर्तन नहीं पाया गया" त्रुटि पर शपथ ग्रहण करने में मदद करता है।


1

समाधान आपको अपने ऐप को INSTALLED_APPS में शामिल करना है।

मुझे यह याद आया और मुझे यही मुद्दा मिला।

मेरा ऐप नाम निर्दिष्ट करने के बाद माइग्रेशन सफल हो गया

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'boards',
]

कृपया ध्यान दें कि मैंने पिछले बोर्ड का उल्लेख किया है, जो मेरा ऐप नाम है।


1

INSTALLED_APPS = [

'blog.apps.BlogConfig',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',

]

सुनिश्चित करें कि 'blog.apps.BlogConfig', (यह आपकी सेटिंग में शामिल है ताकि आपका ऐप माइग्रेशन कर सके)

फिर python3 manage.py makemigrations ब्लॉग या अपने ऐप का नाम चलाएं


1

एक बहुत ही गूंगा मुद्दा आपके पास हो सकता है दो class Metaको अपने मॉडल में परिभाषित करें। उस स्थिति में, पहले चलने पर कोई भी परिवर्तन लागू नहीं होगा makemigrations

class Product(models.Model):
    somefield = models.CharField(max_length=255)
    someotherfield = models.CharField(max_length=255)

    class Meta:
        indexes = [models.Index(fields=["somefield"], name="somefield_idx")]

    def somefunc(self):
        pass

    # Many lines...

    class Meta:
        indexes = [models.Index(fields=["someotherfield"], name="someotherfield_idx")]

1

मुझे पता है कि यह एक पुराना सवाल है लेकिन मैं पूरे दिन इसी मुद्दे पर लड़ता रहा और मेरा समाधान एक आसान था।

मैं अपनी निर्देशिका संरचना कुछ की तर्ज पर था ...

apps/
   app/
      __init__.py
      app_sub1/
           __init__.py
           models.py
      app_sub2/
           __init__.py
           models.py
      app_sub3/
           __init__.py
           models.py
   app2/
      __init__.py
      app2_sub1/
           __init__.py
           models.py
      app2_sub2/
           __init__.py
           models.py
      app2_sub3/
           __init__.py
           models.py
    main_app/
      __init__.py
      models.py

और जब से मेरे साथ एक समस्या थी तब तक सभी अन्य मॉडल आयात किए जा रहे थे, जो कहीं और आयात हो रहे थे, main_appजिसमें से आयात किया गया था INSTALLED_APPS, मैं अभी भाग्यशाली था कि वे सभी काम कर रहे थे।

लेकिन जब से मैंने केवल प्रत्येक appको जोड़ा INSTALLED_APPSऔर app_sub*तब नहीं जब मैंने अंत में एक नया मॉडल फ़ाइल जोड़ा जो किसी भी अन्य तरीके से आयात नहीं किया गया था, Django ने इसे पूरी तरह से अनदेखा कर दिया।

मेरा फिक्स इस तरह models.pyसे प्रत्येक के आधार निर्देशिका में एक फ़ाइल जोड़ रहा था app...

apps/
   app/
      __init__.py
      models.py <<<<<<<<<<--------------------------
      app_sub1/
           __init__.py
           models.py
      app_sub2/
           __init__.py
           models.py
      app_sub3/
           __init__.py
           models.py
   app2/
      __init__.py
      models.py <<<<<<<<<<--------------------------
      app2_sub1/
           __init__.py
           models.py
      app2_sub2/
           __init__.py
           models.py
      app2_sub3/
           __init__.py
           models.py
    main_app/
      __init__.py
      models.py

और फिर स्तर फ़ाइलों में from apps.app.app_sub1 import *से प्रत्येक पर जोड़ें और इतने पर ।appmodels.py

Bleh ... मुझे यह पता लगाने में बहुत समय लगा और मुझे इसका कहीं भी समाधान नहीं मिला ... मैं Google परिणामों के पेज 2 पर भी गया।

आशा है कि यह किसी की मदद करता है!


1

मैं django 3.0 के साथ एक समान मुद्दा था, आधिकारिक दस्तावेज में माइग्रेशन अनुभाग के अनुसार , यह चलाना मेरी तालिका संरचना को अद्यतन करने के लिए पर्याप्त था:

python manage.py makemigrations
python manage.py migrate

लेकिन आउटपुट हमेशा एक जैसा था: 'makemigrations' स्क्रिप्ट निष्पादित करने के बाद मेरे मॉडलों के बारे में 'कोई परिवर्तन नहीं पाया गया'। जिस मॉडल को मैं db पर अद्यतन करना चाहता था, उस पर मॉडल थिंकपैड पर एक सिंटैक्स त्रुटि थी:

field_model : models.CharField(max_length=255, ...)

के बजाय:

field_model = models.CharField(max_length=255, ...)

इस मूर्खतापूर्ण गलती को हल करते हुए, उन आदेशों के साथ प्रवास समस्याओं के बिना किया गया था। शायद यह किसी की मदद करे।



0

मेरे मामले में मैं वर्ग तर्क डालना भूल गया

गलत:

class AccountInformation():

सही बात

class AccountInformation(models.Model):

0

मेरे मामले में, मैंने पहली बार मॉडल में एक फ़ील्ड जोड़ा, और Django ने कहा कि कोई परिवर्तन नहीं हैं।

मैंने मॉडल के "तालिका नाम" को बदलने का फैसला किया, makemigrations ने काम किया। थान I ने तालिका का नाम डिफ़ॉल्ट रूप से बदल दिया, और नया क्षेत्र भी था।

Django माइग्रेशन सिस्टम में "बग" है, कभी-कभी यह नया फ़ील्ड नहीं देखता है। दिनांक क्षेत्र से संबंधित हो सकता है।


0

संभावित कारण मौजूदा db फ़ाइल और माइग्रेशन फ़ोल्डर को हटाया जा सकता है जिसे आप अजगर का उपयोग कर सकते हैं manage.py makemigrations <app_name>यह काम करना चाहिए। मैंने एक बार इसी तरह की समस्या का सामना किया था।


0

एक और धार मामले और समाधान:

मैंने एक बूलियन फ़ील्ड जोड़ा, और एक ही समय में एक ही नाम (doh) के साथ एक @property को जोड़ा। टिप्पणी की गई कि संपत्ति और माइग्रेशन नए क्षेत्र को देखता है और जोड़ता है। संपत्ति का नाम लिया और सब अच्छा है।


0

यदि आपके पास managed = Trueyout मॉडल मेटा में है, तो आपको इसे हटाने और माइग्रेशन करने की आवश्यकता है। फिर से माइग्रेशन चलाएं, यह नए अपडेट का पता लगाएगा।


0

Django api एप्लिकेशन में नए मॉडल जोड़ने और python manage.py makemigrationsउपकरण को चलाने के दौरान किसी नए मॉडल का पता नहीं लगा।

अजीब बात यह थी कि पुराने मॉडलों को उठाया गया था makemigrations, लेकिन इसका कारण यह था कि उन्हें urlpatternsश्रृंखला में संदर्भित किया गया था और उपकरण ने किसी तरह उनका पता लगाया था। इसलिए उस व्यवहार पर नजर रखें।

समस्या इसलिए थी क्योंकि मॉडल पैकेज के अनुरूप निर्देशिका संरचना में सबपेकेज थे और सभी __init__.pyफाइलें खाली थीं। उन्हें स्पष्ट रूप से प्रत्येक सबफ़ोल्डर में सभी आवश्यक वर्गों और__init__.py Django के लिए मॉडल में उन्हें makemigrationsउपकरण के साथ लेने के लिए आयात करना होगा ।

models
  ├── __init__.py          <--- empty
  ├── patient
     ├── __init__.py      <--- empty
     ├── breed.py
     └── ...
  ├── timeline
     ├── __init__.py      <-- empty
     ├── event.py
     └── ...

0

अपने मॉडल को admin.py में पंजीकृत करने का प्रयास करें, यहाँ एक उदाहरण है: - admin.site.register (YourModelHere)

आप निम्न कार्य कर सकते हैं: - 1. admin.site.register (YourModelHere) # admin.py 2. पेज को पुनः लोड करें और पुनः प्रयास करें 3. CTRL-S को हिट करें और सहेजें 4. कोई त्रुटि हो सकती है, विशेष रूप से मॉडल की जाँच करें .py और admin.py 5. या, इसके अंत में सभी सर्वर को पुनः आरंभ करते हैं


0

यह उम्मीद है कि मैं किसी और की मदद कर सकता हूं, क्योंकि मैंने घंटों इस का पीछा करने की कोशिश में खर्च किया।

यदि आपके मॉडल में एक ही नाम से कोई फ़ंक्शन है , तो यह मान निकाल देगा। बहुत स्पष्ट दृष्टि में स्पष्ट है, लेकिन फिर भी।

तो, अगर आपके पास ऐसा कुछ है:

class Foobar(models.Model):
    [...]
    something = models.BooleanField(default=False)

    [...]
    def something(self):
        return [some logic]

उस स्थिति में, फ़ंक्शन ऊपर की सेटिंग को ओवरराइड करेगा, जिससे यह "अदृश्य" हो जाएगा makemigrations


0

बेस्ट थिंग आप कर सकते हैं, मौजूदा डेटाबेस को हटा दें। मेरे मामले में, मैं phpMyAdmin SQL डेटाबेस का उपयोग कर रहा था, इसलिए मैंने मैन्युअल रूप से बनाए गए डेटाबेस को हटा दिया।

हटाने के बाद: मैं PhpMyAdmin में डेटाबेस बनाता हूं, और कोई भी टेबल नहीं जोड़ता हूं।

फिर से निम्नलिखित कमांड चलाएं:

python manage.py makemigrations

python manage.py migrate

इन कमांड के बाद : आप देख सकते हैं कि django ने डेटाबेस में अन्य आवश्यक तालिकाओं को स्वचालित रूप से बनाया है (लगभग 10 टेबल हैं)।

python manage.py makemigrations <app_name>

python manage.py migrate

और अंत में: ऊपर दिए गए आदेशों के बाद आपके द्वारा बनाए गए सभी मॉडल (तालिका) सीधे डेटाबेस में आयात किए जाते हैं।

आशा है कि यह मदद करेगा।


0

इस त्रुटि के साथ मेरी समस्या यह थी कि मैंने इसे शामिल किया था:

class Meta:
   abstract = True

अंदर का मॉडल जिसे मैं बनाना चाहता था।


0

नया ऐप बनाते समय मेरा एक अलग मुद्दा था deals। मैं उस ऐप के अंदर के मॉडल को अलग करना चाहता था इसलिए मेरे पास 2 मॉडल फाइलें थीं जिनका नाम deals.pyऔर है dealers.py। दौड़ते समय python manage.py makemigrationsमुझे मिला No changes detected:।

मैं आगे बढ़ गया और __init__.pyजिसके अंदर उसी डायरेक्टरी में रहता है, जहां मेरी मॉडल फाइलें रहती थीं (डील और डीलर)

from .deals import *
from .dealers import *

और फिर makemigrationsकमांड ने काम किया।

यह बताता है कि यदि आप कहीं भी मॉडल आयात नहीं कर रहे हैं या आपके मॉडल का नाम नहीं है models.pyतो मॉडल का पता नहीं लगाया जाएगा।

एक और मुद्दा जो मेरे साथ हुआ, वह है जिस तरह से मैंने ऐप को लिखा था settings.py:

मैं था:

apps.deals

यह रूट प्रोजेक्ट फ़ोल्डर सहित होना चाहिए:

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