рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреНрд░реЛрдлрд╛рдЗрд▓: рдкреЗрд╢реЗрд╡рд░реЛрдВ, рд╡рд┐рдкрдХреНрд╖, рдиреБрдХрд╕рд╛рди

рдпрд╣ рдХреЛрдИ рд░рд╣рд╕реНрдп рдирд╣реАрдВ рд╣реИ рдХрд┐ Django рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдкреНрд░реЛрдлрд╛рдЗрд▓ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдирд╛ рджреБрд░реНрднрд╛рдЧреНрдп рдХреЗ рдЕрд▓рд╛рд╡рд╛ рдФрд░ рдХреБрдЫ рдирд╣реАрдВ рд╣реИред рд╣рдо рд╕рднреА рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛ рд╣реИред рдЗрд╕ рдореЙрдбрд▓ рдХреА auth.User рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рддрд╛ рд╣реИред рдореЙрдбрд▓, рдЗрд╕рдореЗрдВ рдлрд╝реАрд▓реНрдб рдХреЗ рдЕрдкрд░реНрдпрд╛рдкреНрдд рд╕реЗрдЯ, рд╕рд╛рде рд╣реА рд╕рд╛рде рд╕рднреА рдЯреНрд░рд┐рдХреНрд╕ рдХрд╛ рднреА рд╕рд╣рд╛рд░рд╛ рд▓реЗрдирд╛ рдкрдбрд╝рддрд╛ рдерд╛ред

рд╕рднреА рдХреЛ рд╡рд┐рдХреГрдд рд╣реЛрдирд╛ рдкрдбрд╝рд╛: рди рдХреЗрд╡рд▓ dzhanga рдХреЗ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП, рдмрд▓реНрдХрд┐ рдЗрд╕рдХреЗ рдореВрд▓ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рднреАред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдпрд╛рдж рд░рдЦреЗрдВ рдХрд┐ Django 1.2 рдореЗрдВ рдЕрдЪрд╛рдирдХ username рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдХреБрддреНрддреЗ рдХреЗ рдкрд╛рддреНрд░реЛрдВ (@) рдФрд░ username рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдХреИрд╕реЗ рд╕рдВрднрд╡ рд╣реЛ рдЧрдпрд╛? рдЬрд╛рдирддреЗ рд╣реЛ рдХреНрдпреЛрдВ? рддрд╛рдХрд┐ рдЖрдк рд▓реЙрдЧрд┐рди рдХреЗ рд░реВрдк рдореЗрдВ рдИ-рдореЗрд▓ рдкрддреЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХреЗрдВ ред

рд╣рдо, рд╕рд╛рдзрд╛рд░рдг рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛, рднреА рдПрдХ рдХрдард┐рди рд╕рдордп рдерд╛ред рдПрдХ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдкреНрд░реЛрдлрд╛рдЗрд▓ рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдЙрд╕рдХреЗ рд▓рд┐рдП рдХреБрдЫ рджрд┐рд▓рдЪрд╕реНрдк рдлрд╝реАрд▓реНрдб рдЬреЛрдбрд╝рдХрд░ - рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рд╕реА рдмрд╛рдд, рд╕рд╣реА? - рдЕрд▓рдЧ-рдЕрд▓рдЧ рддрд░реАрдХреЛрдВ рд╕реЗ рдХрд╛рд░реНрдп рдХрд░рдирд╛ рдкрдбрд╝рд╛ред

рдмрдВрджрд░реЛрдВ рдХрд╛ рдмреЛрд▓рдирд╛ ...


рджреБрдирд┐рдпрд╛ рдХреЛ рджрд┐рдЧреНрдЧрдЬ рд╕реЛрд░реНрд▓.рдереБрдореНрдирдиреЗрд▓ рдХреЛ рджреЗрдиреЗ рд╡рд╛рд▓реЛрдВ рдиреЗ рдПрдХ рдмрд╛рд░ рдлрд┐рд░ рд╕реЗ рдЙрддреНрдХреГрд╖реНрдЯ рдкреНрд░рджрд░реНрд╢рди рдХрд┐рдпрд╛ рдФрд░ рдЦрд╛рддреЗ рдореЗрдВ рдПрдХ рдФрд░ рд╣рддреНрдпрд╛рд░реА рдЪреАрдЬ рдмрдирд╛ рджреАред рдорд┐рд▓рд┐рдП: django- primate, mankipatching рдХреЗ рддрд░реАрдХреЛрдВ (рдкреНрд░рд╛рдЗрдореЗрдЯреНрд╕ рдФрд░ рдмрдВрджрд░реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдХреНрдпрд╛ рдЖрдк рд╕рд╣рд╕рдВрдмрдВрдз рдорд╣рд╕реВрд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?) рдЕрдкрдиреЗ рдЦреБрдж рдХреЗ рдореЙрдбрд▓ рдХреЛ auth.User рдореЗрдВ auth.User рдмрд╣реБрдд рдЖрд╕рд╛рди рдмрдирд╛рддрд╛ рд╣реИред рд╡рд╣ рд╣реИ, рд░реВрд╕реА рдореЗрдВ, рд╡рд╛рдВрдЫрд┐рдд рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреА рдПрдХ рдкреНрд░реЛрдлрд╝рд╛рдЗрд▓ рдХреА рд░рдЪрдирд╛ рдХрд░рдирд╛ред

рд╢реБрд░реБрдЖрдд рдХрд░рдирд╛ рдХрд╛рдлреА рдЖрд╕рд╛рди рд╣реИред рд╕рдмрд╕реЗ рдкрд╣рд▓реЗ рдЖрдкрдХреЛ django-primate рд▓рдЧрд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдпрд╣ PyPI рдХреЗ рд╕рд╛рде рд╕рдВрднрд╡ рд╣реИ:

 pip install django-primate 

... рдФрд░ рдЖрдк рдЙрдирдХреЗ рднрдВрдбрд╛рд░ рд╕реЗ рдирд╡реАрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рднреА рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

 pip install -e git+https://github.com/aino/django-primate.git#egg=django-primate 

рдЖрдкрдХреЛ рд╕реНрдЯрд╛рд░реНрдЯрдЕрдк рдкрд░ рдкреИрдЪ рдХреЙрд▓ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдирд┐рд░реНрдорд╛рддрд╛ рдЗрд╕реЗ manage.py рд╕рд▓рд╛рд╣ рджреЗрддреЗ рд╣реИрдВ

 #!/usr/bin/env python from django.core.management import setup_environ, ManagementUtility import imp try: imp.find_module('settings') # Assumed to be in the same directory. except ImportError: import sys sys.stderr.write( "Error: Can't find the file 'settings.py' in the directory " "containing %r. It appears you've customized things.\nYou'll have to " "run django-admin.py, passing it your settings module.\n" % __file__ ) sys.exit(1) import settings if __name__ == "__main__": setup_environ(settings) import primate primate.patch() ManagementUtility().execute() 

рдЕрдм рд╡рд╣ рд╕рдм рдХреБрдЫ рдЙрд╕ рдореЙрдбрд▓ settings рд╢реНрд░реЗрдгреА рдореЗрдВ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░рдирд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдо рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ

 AUTH_USER_MODEL = 'users.models.User' 

... рдФрд░ рдЖрдк рдореЙрдбрд▓ рдХреЗ рд╕рд╛рде рдЖрдирд╛ рд╢реБрд░реВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:

 # users.models from django.db import models from primate.models import UserBase, UserMeta class User(UserBase): __metaclass__ = UserMeta birthday = models.DateField() #    ? 


рдЕрдм, рдЬрдм рдХреЛрдИ рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдШрдЯрдХ django.contrib.auth.models.User , рддреЛ рдЙрд╕реЗ рдПрдХ users.models.User рдореЙрдбрд▓ рдкреНрд░рд╛рдкреНрдд рд╣реЛрдЧрд╛ред рдЖрдХреНрд╖реЗрдк рднреА рд╕рддреНрдп рд╣реИред рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдкреИрдирд▓ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдкреИрдЪ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЗрд╕реЗ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдХрд┐рд╕реА рд╡рд┐рд╢реЗрд╖ рдХрджрдо рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред

рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ, django- auth.User рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдореЙрдбрд▓ рдореЗрдВ auth.User рд╕реЗ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЕрдВрддрд░ рд╣реИрдВ:

рдЕрдиреНрдпрдерд╛, рдкреНрд░рд╛рдЗрдореЗрдЯ рдпреВрдЬрд░ рдореЙрдбрд▓ рдмрддреНрддрдЦ рдХреА рддрд░рд╣ рдЪрд▓рддрд╛ рд╣реИ, рдмрддреНрддрдЦ рдХреА рддрд░рд╣ рддреИрд░рддрд╛ рд╣реИ рдФрд░ рдмрддреНрддрдЦ рдХреА рддрд░рд╣ рдЪреБрдЯрдХреА рдмрдЬрд╛рддрд╛ рд╣реИ , рдпрд╣ рдбреЗрдЬрд╝рд╛рдиреНрдЧреЛрд╡реНрд╕реНрдХреА рд╕реНрд░реЛрдд рдХреА рддрд░рд╣ рдмрд╣реБрдд рд╡реНрдпрд╡рд╣рд╛рд░ рдХрд░рддрд╛ рд╣реИред

рдмреЗрд╢рдХ, рдЖрдк рдлрд╝реАрд▓реНрдбреНрд╕ рдХреЗ рдХрд┐рд╕реА рднреА рд╕реЗрдЯ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рдПрдХ рдЬреЛрдЦрд┐рдо рд╣реИ рдХрд┐ рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреЗ рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рдмреАрдЪ рдЕрд╕рдВрдЧрддрд┐ рд╣реЛрдЧреА, рдЗрд╕рд▓рд┐рдП username , password рдФрд░ email рдлрд╝реАрд▓реНрдб рдХрд╛ рдирд╛рдо рдирд╣реАрдВ рдмрджрд▓рдирд╛ рдмреЗрд╣рддрд░ рд╣реЛрдЧрд╛ред

рдПрдХ рдФрд░ рдмрд┐рдВрджреБ: рдЬрдВрдЧ рдХреЗ рд╕рд╛рде рд╕рдВрдЧрддрддрд╛ рдХреЗ рд▓рд┐рдП, рдкреНрд░рд╛рдЗрдореЗрдЯ рдореЙрдбрд▓ рдХреЛ рдбрд╛рдЙрдирд▓реЛрдб рдХрд░реЗрдЧрд╛ рддрд╛рдХрд┐ рдЗрд╕рдХрд╛ app_label users (рдЙрджрд╛рд╣рд░рдг рдХреЗ рд░реВрдк рдореЗрдВ) рди рд╣реЛ, рд▓реЗрдХрд┐рди рд╕рд╛рдорд╛рдиреНрдп рд╣реЛред рдпрд╣ рджрдХреНрд╖рд┐рдг рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЗ рд▓рд┐рдП рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рд╕рдЪ рд╣реИ рдЬреЛ рдХреБрдЫ рд╕рдордп рдХреЗ рд▓рд┐рдП рд╕рдордЭ рдирд╣реАрдВ рд╕рдХрддреЗ рд╣реИрдВред

 ./manage.py schemamigration users --auto 

рдХреЛрдИ рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдирд╣реАрдВ рдмрдирд╛рддрд╛ рд╣реИред

рд╣рд╛рд▓рд╛рдВрдХрд┐, рд╣рд░ рдХреЛрдИ README рд╕реЗ рдкрд░рд┐рдЪрд┐рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИ, рдЬрд┐рд╕рдХрд╛ рдореИрдВрдиреЗ рдмрд╣реБрдд рд╣реА рд╕реНрд╡рддрдВрддреНрд░ рд░реВрдк рд╕реЗ рдЕрдиреБрд╡рд╛рдж рдХрд┐рдпрд╛ рд╣реИред рдЕрдЧрд░ рдореИрдВрдиреЗ рдХреБрдЫ рдпрд╛рдж рдХрд┐рдпрд╛, рдЧрд▓рддреА рдХреА рдпрд╛ рдЕрд╢реБрджреНрдзрд┐ рдХреА, рддреЛ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдореЗрдВ рд▓рд┐рдЦреЗрдВ рдпрд╛ рдЕрдкрдиреЗ рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЛ рд╕рд╛рдЭрд╛ рдХрд░реЗрдВред

рдЖрдкрдХрд╛ рдзреНрдпрд╛рди рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж :)

Source: https://habr.com/ru/post/In118468/


All Articles