11

यह मेरा models.py है:माइग्रेट करने का प्रयास करते समय "निम्न सामग्री प्रकारों को बाँधना और हटाया जाना चाहिए" प्राप्त करना। इसका क्या अर्थ है, और मैं इसे कैसे हल कर सकता हूं?

Migrations for 'CApp': 
    0019_auto_20151202_2228.py: 
    - Create model RegularNotification 
    - Create model FNotification 
    - Remove field user from notification 
    - Add field f_request to userextended 
    - Delete model Notification 

सबसे पहले, यह है कि यह कहते हैं Remove field user from notification क्योंकि user अभी भी मेरे Notiication मॉडल में है अजीब है:

class Notification(models.Model): 
    user = models.ForeignKey(User) 
    createdAt = models.DateTimeField(auto_now_add=True, blank=True) 
    read = models.BooleanField(default=False, blank=True) 

    class Meta: 
     abstract = True 

class RegularNotification(Notification): 
    message = models.CharField(max_length=150) 
    link = models.CharField(max_length=100) 

class FNotification(Notification): 
    # same as Notification 
    pass 

जब मैं python manage.py makemigrations करते हैं, यह यह क्या कहते है (इसलिए यदि कोई यह समझ सकता है कि यह क्यों कहता है कि 'फ़ील्ड उपयोगकर्ता को अधिसूचना से हटा रहा है', तो यह बहुत अच्छा होगा!) लेकिन फिर भी, जब मैं आगे बढ़ता हूं और python manage.py migrate करने का प्रयास करता हूं तो मुझे यह संदेश मिलता है:

Applying CMApp.0019_auto_20151202_2228... OK 
The following content types are stale and need to be deleted: 

    CApp | notification 

Any objects related to these content types by a foreign key will also 
be deleted. Are you sure you want to delete these content types? 
If you're unsure, answer 'no'. 

    Type 'yes' to continue, or 'no' to cancel: no 

मैंने no टाइप किया। लेकिन इसका क्या अर्थ है, मुझे यह संदेश क्यों मिल रहा है और मैं इसे कैसे बना सकता हूं ताकि मुझे इस संदेश की आवश्यकता न हो?

+0

मुझे यह मिला क्योंकि मैं भंडार की अंतिम प्रतिबद्धता को खींचना भूल गया था। मेरा नवीनतम स्थानीय प्रवास भंडार में नवीनतम नहीं था। : पी मैंने रिमोट कोड खींचा, मैंने फिर से माइग्रेशन किया और मैंने एक आकर्षण की तरह काम किया। – joaorodr84

उत्तर

10

जब आप मॉडल को हटाते/हटाते हैं और माइग्रेशन करते हैं तो आपको प्राप्त संदेश ट्रिगर होता है।

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

Here's the django ticket that requests to make deleting stale content types safer.

संपादित

के रूप में @ एक्स-यूरी कहे अनुसार, इस टिकट तय किया गया है और Django 1.11 में जारी की गई है।

+0

ओह, इसलिए क्योंकि मैंने 'अधिसूचना' मॉडल में 'सार = सही' जोड़ा, शायद यही कारण है कि Django मानता है कि मैंने इसे हटा दिया है। कोई विचार यह क्यों कहता है '- अधिसूचना से फ़ील्ड उपयोगकर्ता को हटाएं' फिर? चूंकि 'उपयोगकर्ता' विदेशीकी अभी भी वहां है, तो Django क्यों कहता है कि इसे हटा दिया गया है? – user2719875

+0

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

+0

@ मेरे मामले में रोडमैवियर मेरे पास एक मॉडल ए है जिसे बी, सी मॉडल के लिए विदेशी कुंजी के साथ हटा दिया गया है। इसका मतलब है कि माइग्रेशन करके, मॉडल बी, सी में डेटा हटा दिया जाएगा या केवल एक विदेशी कुंजी है मॉडल ए के लिए? धन्यवाद – Pietro

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

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