рдкреНрд░реЙрдХреНрд╕реА рдореЙрдбрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рд╕рдВрдкрд╛рджрди рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдХреЛ рдкреНрд░рддрд┐рдмрдВрдзрд┐рдд рдХрд░рдирд╛

Django рдХрд╛ рдкреНрд░рд╢рд╛рд╕рдирд┐рдХ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдЖрдкрдХреЛ рд╡рд┐рднрд┐рдиреНрди рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреА рд╡рд╕реНрддреБрдУрдВ рддрдХ рдкрд╣реБрдБрдЪ рдЕрдзрд┐рдХрд╛рд░ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрддрд╛ рд╣реИред рдХрд┐рд╕реА рднреА рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдХреЗ рдХрд┐рд╕реА рднреА рдореЙрдбрд▓ рдХреЗ рд▓рд┐рдП, рдЖрдк рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рддреАрди рдХрд╛рд░реНрдпреЛрдВ рдХреА рдЕрдиреБрдорддрд┐ рджреЗ рд╕рдХрддреЗ рд╣реИрдВ: рдирдИ рд╡рд╕реНрддреБрдУрдВ рдХреЛ рдЬреЛрдбрд╝реЗрдВ, рдореМрдЬреВрджрд╛ рд╡рд╕реНрддреБрдУрдВ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░реЗрдВ рдФрд░ рд╣рдЯрд╛рдПрдВред

рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдЕрдЧрд░ рд╣рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдХреЗрд╡рд▓ рдЦреЗрддреЛрдВ рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ? рдФрд░ рдПрдХ рд╣реА рд╕рдордп рдореЗрдВ, рдЕрдиреНрдп рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ рдХреЛ рд╕рднреА рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рдиреЗ рдХрд╛ рдЕрд╡рд╕рд░ рдЫреЛрдбрд╝ рджреЗрдВред

рдкреНрд░реЙрдХреНрд╕реА рдореЙрдбрд▓ рд╣рдорд╛рд░реА рдорджрдж рдХрд░реЗрдВрдЧреЗред рдЬрд╛рдВрдЧреЛ рд╢рдмреНрджрд╛рд╡рд▓реА рдореЗрдВ, рдПрдХ рдкреНрд░реЙрдХреНрд╕реА рдореЙрдбрд▓ рдПрдХ рдРрд╕реА рд╡рд╕реНрддреБ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдПрдХ рдирд┐рдпрдорд┐рдд рдореЙрдбрд▓ рдХрд╛ рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдПрдХ рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реЗ рдмрдВрдзрд╛ рдирд╣реАрдВ рд╣реИ, рдпрд╛ рдмрд▓реНрдХрд┐, рдпрд╣ рдХрд┐рд╕реА рдЕрдиреНрдп рдореЙрдбрд▓ рд╕реЗ рдбреЗрдЯрд╛ рд╕реЗ рдмрдВрдзрд╛ рд╣реИред рдпрд╣ рдХрд┐рд╕ рд▓рд┐рдП рд╣реИ?

Django рдкреНрд░рд▓реЗрдЦрди рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЙрджрд╛рд╣рд░рдг рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реИред рд╣рдо рдПрдХ рдЕрддрд┐рд░рд┐рдХреНрдд рд╡рд┐рдзрд┐ auth.User рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдРрд╕рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдо auth.User рдореЙрдбрд▓ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рдПрдХ рдкреНрд░реЙрдХреНрд╕реА рдореЙрдбрд▓ рдмрдирд╛рддреЗ рд╣реИрдВред auth.User рдореЙрдбрд▓, рд╡рд╣рд╛рдВ рдЗрд╕ рд╡рд┐рдзрд┐ рдХрд╛ рд╡рд░реНрдгрди рдХрд░реЗрдВ рдФрд░ рдЬрд╣рд╛рдВ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ, рдореВрд▓ рдХреЗ рдмрдЬрд╛рдп рдЗрд╕ рдкреНрд░реЙрдХреНрд╕реА рдореЙрдбрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред

рдЖрдЗрдП рдЕрдкрдиреЗ рдХрд╛рдо рдкрд░ рд╡рд╛рдкрд╕ рд▓реМрдЯрддреЗ рд╣реИрдВред рдкреНрд░реЙрдХреНрд╕реА рдореЙрдбрд▓ рдЙрдкрдпреЛрдЧреА рд╣реИрдВ рдХрд┐ рд╣рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдореВрд▓ рдореЙрдбрд▓ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рд╕реЗ рд░реЛрдХ рд╕рдХрддреЗ рд╣реИрдВ, рдЙрд╕реЗ рдкреНрд░реЙрдХреНрд╕реА рдореЙрдбрд▓ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдФрд░ рд╕рдВрдкрд╛рджрди рдлрд╝реЙрд░реНрдо рдХреЛ рдХреЙрдиреНрдлрд╝рд┐рдЧрд░ рдХрд░рдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдВ рддрд╛рдХрд┐ рдХреЗрд╡рд▓ рдЙрдкрд▓рдмреНрдз рдлрд╝реАрд▓реНрдб рдЙрдкрд▓рдмреНрдз рд╣реЛрдВред

рдЖрдЗрдП рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ рдХрд┐ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдореЙрдбрд▓ рд╣реИрдВ:

 class Article(models.Model): title = models.CharField(...) body = models.CharField(...) tags = models.CharField(...) 


рд╣рдо рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рд╕рдВрдкрд╛рджрдХ рдХреЛ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдкреИрдирд▓ рдореЗрдВ рдЬрд╛рдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП, рд▓реЗрдЦреЛрдВ рдХреА рд╕реВрдЪреА рджреЗрдЦреЗрдВ, рдЯреИрдЧ рдмрджрд▓реЗрдВ, рд▓реЗрдХрд┐рди рд▓реЗрдЦ рдХрд╛ рд╢реАрд░реНрд╖рдХ рдпрд╛ рдирд┐рдХрд╛рдп рдирд╣реАрдВ рдмрджрд▓ рд╕рдХрддреЗред

рдЖрдЗрдП рд╢реБрд░реБрдЖрдд рдХреЗ рд▓рд┐рдП рдПрдХ рдкреНрд░реЙрдХреНрд╕реА рдореЙрдбрд▓ рдмрдирд╛рдПрдВ:

 class ArticleEditProxy(Article): class Meta: proxy = True 


рдЕрдм рдЗрд╕ рдореЙрдбрд▓ рдХреЛ admin.site рдореЗрдВ рдкрдВрдЬреАрдХреГрдд рдХрд░реЗрдВ рдФрд░ рдЗрд╕реЗ рдПрдХ рд╡рд┐рд╢реЗрд╖ рд░реВрдк рдореЗрдВ рдЕрд╕рд╛рдЗрди рдХрд░реЗрдВ рдЬрд┐рд╕рдореЗрдВ рдХреЗрд╡рд▓ рд╕рдВрдкрд╛рджрди рдХреЗ рд▓рд┐рдП рдЯреИрдЧ рдЙрдкрд▓рдмреНрдз рд╣реИрдВ

 class ArticleEditProxyForm(forms.ModelForm): class Meta: model = ArticleEditProxy fields = ['tags'] class ArticleEditProxyAdmin(admin.ModelAdmin): list_display = ['title', 'tags'] form = ArticleEditProxyForm readonly_fields = ['title', 'body'] admin.site.register(ArticleEditProxy, ArticleEditProxyAdmin) 


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

рдПрдХ рдФрд░ рдЕрддрд┐ рд╕реВрдХреНрд╖реНрдо рдЕрдВрддрд░ред рдЕрдиреБрдорддрд┐ рдореЙрдбрд▓ рдХреА рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрдВрдЧ рдореЗрдВ рд╡рд┐рднрд┐рдиреНрди рдореЙрдбрд▓реЛрдВ рдХреА рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдЕрдзрд┐рдХрд╛рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдкрдврд╝рдирд╛ рдПрдХ рдЕрдиреБрдорддрд┐ рд╡рд╕реНрддреБ рд╣реИ, рд▓рд┐рдЦрдирд╛ рдПрдХ рдФрд░ рд╣реИ, рджреВрд╕рд░рд╛ рд╣рдЯрд╛рдирд╛ рд╣реИред рдирдП рдореЙрдбрд▓ рдХреЗ рд▓рд┐рдП рдЕрдиреБрдорддрд┐ рдСрдмреНрдЬреЗрдХреНрдЯ рддрдм рдмрдирд╛рдП рдЬрд╛рддреЗ рд╣реИрдВ рдЬрдм manage.py syncdb рдЪрд▓рд╛рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрджрд┐ рдкреНрд░реЙрдХреНрд╕реА рдореЙрдбрд▓ рдмрдирд╛рдиреЗ рдХреЗ рд╕рдордп рдЖрдкрдХреЗ рдЖрд╡реЗрджрди рдХреЛ рджрдХреНрд╖рд┐рдг рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рддреЛ рдЕрдиреБрдорддрд┐ рдСрдмреНрдЬреЗрдХреНрдЯ рдирд╣реАрдВ рдмрдирд╛рдП рдЬрд╛рдПрдВрдЧреЗ, рджрдХреНрд╖рд┐рдг рдЖрдкрдХреЗ рдкреНрд░реЙрдХреНрд╕реА рдореЙрдбрд▓ рдХреЛ "рдиреЛрдЯрд┐рд╕" рдирд╣реАрдВ рдХрд░реЗрдЧрд╛, рдФрд░ рд╕рд┐рдВрдХрдмрдм рдСрдкрд░реЗрд╢рди рджрдХреНрд╖рд┐рдг рджреНрд╡рд╛рд░рд╛ рджрд┐рдП рдЧрдП рдЕрдиреБрдкреНрд░рдпреЛрдЧреЛрдВ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ ред

рдЖрдкрдХреЛ рдПрдХ рдорд╛рдЗрдЧреНрд░реЗрд╢рди рдмрдирд╛рдирд╛ рд╣реЛрдЧрд╛ рдЬреЛ рдЖрдкрдХреЗ рдкреНрд░реЙрдХреНрд╕реА рдореЙрдбрд▓ рдХреЗ рд▓рд┐рдП post_syncdb рд╕рд┐рдЧреНрдирд▓ рднреЗрдЬреЗрдЧрд╛ред

 class Migration(SchemaMigration): def forwards(self, orm): db.send_create_signal('myapp', ['ArticleEditProxy']) 


рдореИрдВрдиреЗ рдЗрд╕ рдмреНрд▓реЙрдЧ рдкрд░ рдорд╛рдЗрдЧреНрд░реЗрд╢рди рд╣реИрдХ рдХрд╛ рд╡рд┐рд╡рд░рдг рд╕реАрдЦрд╛ред

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


All Articles