मैंने अपने में एक नया ImageField जोड़ा है models.py
:
class User(AbstractUser):
[more_fields_here]
profile_picture = models.ImageField(upload_to="profile_pictures", null=True)
मैं भाग गया python manage.py makemigrations
और फिर python manage.py migrate
बिना किसी त्रुटि के।
लेकिन जब मैं अपना आवेदन चलाता हूं तो मुझे मिल रहा है:
ProgrammingError at column authentication_user.profile_picture does not exist
मैंने पोस्टग्रेज डेटाबेस और कॉलम में जाँच की profile_picture
अस्तित्व में नहीं है।
मैंने माइग्रेशन हटा दिया और फिर से प्रयास किया, लेकिन मुझे अभी भी वही त्रुटि मिल रही है।
में migrations/0001_initial.py
वहाँ लाइन है:
("profile_picture", models.ImageField(null=True, upload_to="profile_pictures")),
लेकिन कॉलम क्यों करता है नहीं टेबल में मौजूद है?
उत्तर:
उत्तर № 1 के लिए 1ऐसा लगता है कि यह माइग्रेशन के साथ कुछ गड़बड़ था, यह मैन्युअल रूप से माइग्रेशन फ़ाइलों को संशोधित करने के लिए अनुशंसित नहीं है। Django उन सूचनाओं को संग्रहीत करता है जो माइग्रेशन पहले से ही लागू थे, यदि आप संशोधित करते हैं 0001
माइग्रेशन जो पहले से लागू है और चलता है migrate
फिर से उन संशोधनों को "टी अप्लाई किया गया। बेशक मैं नहीं जानता" कि क्या यह वास्तव में आपके साथ हुआ है, लेकिन ऐसा लगता है profile_picture
फ़ील्ड के बाद जोड़ा गया था 0001
लागू किया था।
इसे ठीक करने का सबसे आसान तरीका (बिना किसी माइग्रेशन को रोलबैक किए):
- मैदान हटा दें
profile_picture
से0001
प्रवास - रन
makemigrations
फिर (0002
नए क्षेत्र के साथprofile_picture
बनाया जाना चाहिए) - रन
migrate