दक्षिण आपके लिए इस प्रवास को करने में सक्षम से अधिक है, लेकिन आपको स्मार्ट होने और इसे चरणों में करने की आवश्यकता है। यहां चरण-दर-चरण मार्गदर्शिका दी गई है:(इस मार्गदर्शिका में आपको उपवर्ग AbstractUser
माना जाता है। , नहीं AbstractBaseUser
)
-
स्विच करने से पहले, सुनिश्चित करें कि एप्लिकेशन में दक्षिण समर्थन सक्षम है जिसमें आपका कस्टम उपयोगकर्ता मॉडल शामिल है (गाइड के लिए, हम इसे
accounts
कहेंगे और मॉडलUser
).इस बिंदु पर आपको अभी तक नहीं . होना चाहिए एक कस्टम उपयोगकर्ता मॉडल है।$ ./manage.py schemamigration accounts --initial Creating migrations directory at 'accounts/migrations'... Creating __init__.py in 'accounts/migrations'... Created 0001_initial.py. $ ./manage.py migrate accounts [--fake if you've already syncdb'd this app] Running migrations for accounts: - Migrating forwards to 0001_initial. > accounts:0001_initial - Loading initial data for accounts.
-
अकाउंट्स ऐप में एक नया, ब्लैंक यूजर माइग्रेशन बनाएं।
$ ./manage.py schemamigration accounts --empty switch_to_custom_user Created 0002_switch_to_custom_user.py.
-
अपना कस्टम
User
Create बनाएंaccounts
में मॉडल ऐप, लेकिन सुनिश्चित करें कि इसे इस प्रकार परिभाषित किया गया है:class SiteUser(AbstractUser): pass
-
निम्नलिखित कोड के साथ खाली माइग्रेशन भरें।
# encoding: utf-8 from south.db import db from south.v2 import SchemaMigration class Migration(SchemaMigration): def forwards(self, orm): # Fill in the destination name with the table name of your model db.rename_table('auth_user', 'accounts_user') db.rename_table('auth_user_groups', 'accounts_user_groups') db.rename_table('auth_user_user_permissions', 'accounts_user_user_permissions') def backwards(self, orm): db.rename_table('accounts_user', 'auth_user') db.rename_table('accounts_user_groups', 'auth_user_groups') db.rename_table('accounts_user_user_permissions', 'auth_user_user_permissions') models = { ....... } # Leave this alone
-
माइग्रेशन चलाएँ
$ ./manage.py migrate accounts - Migrating forwards to 0002_switch_to_custom_user. > accounts:0002_switch_to_custom_user - Loading initial data for accounts.
-
अपने उपयोगकर्ता मॉडल में अभी कोई भी परिवर्तन करें।
# settings.py AUTH_USER_MODEL = 'accounts.User' # accounts/models.py class SiteUser(AbstractUser): site = models.ForeignKey(Site, null=True)
-
इस बदलाव के लिए माइग्रेशन बनाएं और चलाएं
$ ./manage.py schemamigration accounts --auto + Added field site on accounts.User Created 0003_auto__add_field_user_site.py. $ ./manage.py migrate accounts - Migrating forwards to 0003_auto__add_field_user_site. > accounts:0003_auto__add_field_user_site - Loading initial data for accounts.
ईमानदारी से, यदि आपको पहले से ही अपने सेटअप के बारे में अच्छी जानकारी है और आप पहले से ही दक्षिण का उपयोग कर रहे हैं, तो यह आपके खाते के मॉड्यूल में निम्नलिखित माइग्रेशन को जोड़ने जितना आसान होना चाहिए।
# encoding: utf-8
from south.db import db
from south.v2 import SchemaMigration
from django.db import models
class Migration(SchemaMigration):
def forwards(self, orm):
# Fill in the destination name with the table name of your model
db.rename_table('auth_user', 'accounts_user')
db.rename_table('auth_user_groups', 'accounts_user_groups')
db.rename_table('auth_user_permissions', 'accounts_user_permissions')
# == YOUR CUSTOM COLUMNS ==
db.add_column('accounts_user', 'site_id',
models.ForeignKey(orm['sites.Site'], null=True, blank=False)))
def backwards(self, orm):
db.rename_table('accounts_user', 'auth_user')
db.rename_table('accounts_user_groups', 'auth_user_groups')
db.rename_table('accounts_user_user_permissions', 'auth_user_user_permissions')
# == YOUR CUSTOM COLUMNS ==
db.remove_column('accounts_user', 'site_id')
models = { ....... } # Leave this alone
2/5/13 संपादित करें:auth_user_group तालिका के लिए नाम बदलें। FKs db बाधाओं के कारण सही तालिका पर इंगित करने के लिए स्वतः अद्यतन होंगे, लेकिन M2M फ़ील्ड के तालिका नाम 2 अंत तालिकाओं के नाम से उत्पन्न होते हैं और इस तरह से मैन्युअल रूप से अद्यतन करने की आवश्यकता होगी।
संपादित करें 2:सुधार के लिए @Tuttle और @pix0r को धन्यवाद।