Django рдЖрдкрдХреЗ рд╕реЛрдЪрдиреЗ рдХреЗ рддрд░реАрдХреЗ рдкрд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ


рдЬрдм рдореИрдВ рдЙрди рдЕрдЪреНрдЫрд╛рдЗрдпреЛрдВ рдХреА рд╕реВрдЪреА рдкрдврд╝рддрд╛ рд╣реВрдВ рдЬреЛ рдХрд┐рд╕реА рднреА рдврд╛рдВрдЪреЗ рдиреЗ рдореБрдЭреЗ рдкреНрд░рджрд╛рди рдХреА рд╣реИрдВ, рддреЛ рдореИрдВ рдХрд▓реНрдкрдирд╛ рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рдЙрдирдХреЗ рджреНрд╡рд╛рд░рд╛ рдХреНрдпрд╛ рдорддрд▓рдм рд╣реИред рдЬрдм рдореИрдВ рдЕрдЪреНрдЫрд╛рдЗрдпреЛрдВ рдХреЗ рд▓рд┐рдП рдкреНрд░рд▓реЗрдЦрди рдкрдврд╝рддрд╛ рд╣реВрдВ, рддреЛ рдореИрдВ рдпрд╣ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддрд╛ рд╣реВрдВ рдХрд┐ рд╕рдордЧреНрд░ рд░реВрдк рд╕реЗ рд╕рдм рдХреБрдЫ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдРрд╕рд╛ рд╣реА рд╣реИ рдЬреИрд╕рд╛ рдореИрдВрдиреЗ рд╕реЛрдЪрд╛ рдерд╛ред рдЬрдм рдореИрдВ рдХреЛрдб рд▓рд┐рдЦрддрд╛ рд╣реВрдВ, рдореИрдВ рддрд╛рдУ рдХреЛ рд╕рдордЭ рд▓реЗрддрд╛ рд╣реВрдВред рдХреНрдпреЛрдВрдХрд┐ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рд╕рдм рдХреБрдЫ рдХрд╛рдлреА рдЧрд▓рдд рд╣реИред

рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рдХреА рдЧрдИ рдХрдИ рдЧрд▓рддрд┐рдпрд╛рдБ рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рдереАрдВ рдХрд┐ рдореБрдЭреЗ рдпрдХреАрди рдерд╛ рдХрд┐ рдпрд╣ рдореЗрд░реЗ рд╕реЛрдЪрдиреЗ рдХреЗ рддрд░реАрдХреЗ рдкрд░ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ ред рдореИрдВрдиреЗ рдЗрд╕ рдкрд░ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдХрд┐рдпрд╛ рдФрд░ рдЗрд╕ рд╕рдВрднрд╛рд╡рдирд╛ рдХреЛ рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреА рдХрд┐ рдпрд╣ рдЕрдиреНрдпрдерд╛ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рдмреЗрд╢рдХ, рдХреИрдкреНрдЯрди рдПрд╡рд┐рдбреЗрдВрд╕ рдХрд╣реЗрдВрдЧреЗ рдХрд┐ рдЖрдкрдХреЛ рд╡рд┐рд╢реНрд╡рд╛рд╕ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ - рдЖрдкрдХреЛ рджрд╕реНрддрд╛рд╡реЗрдЬ рдкрдврд╝рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред рдФрд░ рд╣рдо рдкрдврд╝рддреЗ рд╣реИрдВ, рдкрдврд╝рддреЗ рд╣реИрдВ, рдпрд╛рдж рдХрд░рддреЗ рд╣реИрдВ, рдпрд╛рдж рдХрд░рддреЗ рд╣реИрдВред рдХреНрдпрд╛ рд╕рднреА рдЫреЛрдЯреА рдЪреАрдЬреЛрдВ рдХреЛ рд╕реНрдореГрддрд┐ рдореЗрдВ рд░рдЦрдирд╛ рд╕рдВрднрд╡ рд╣реИ? рдФрд░ рдХреНрдпрд╛ рдЙрдиреНрд╣реЗрдВ рдбреЗрд╡рд▓рдкрд░ рдХреЛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдирд╛ рд╕рд╣реА рд╣реИ, рдФрд░ рдлреНрд░реЗрдорд╡рд░реНрдХ рдХреЗ рд▓рд┐рдП рдирд╣реАрдВ?

рдЦреИрд░, рдирд┐рд░рд╛рдзрд╛рд░ рдирд╣реАрдВ рд╣реЛрдиреЗ рдХреЗ рд▓рд┐рдП - рдЖрдЗрдП рдЙрджрд╛рд╣рд░рдгреЛрдВ рдкрд░ рдЪрд▓рддреЗ рд╣реИрдВред рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдЗрдВрддрдЬрд╛рд░ рдХрд░ рд░рд╣рд╛ рд╣реИ:
  1. рдЕрдЪреВрдХ рдореЙрдбрд▓ рд╣рдо рдирд┐рдХрд╛рд▓ рджреЗрдВрдЧреЗ
  2. рдорд╛рдиреНрдп рдлрд╝реАрд▓реНрдб рдЬреЛ рдорд╛рдиреНрдп рдирд╣реАрдВ рд╣реИрдВ
  3. рджреЛ рдкреНрд░рд╢рд╛рд╕рдХ рдЬреЛ рдбреЗрдЯрд╛ рдХреЛ рдЦрд░рд╛рдм рдХрд░рддреЗ рд╣реИрдВ


1. рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдкреИрдирд▓ рдореЗрдВ рд╡рд╕реНрддреБрдУрдВ рдХреЛ рд╣рдЯрд╛рдирд╛


рдХрд▓реНрдкрдирд╛ рдХрд░реЗрдВ рдХрд┐ рдЖрдкрдХреЗ рдкрд╛рд╕ рдПрдХ рдореЙрдбрд▓ рд╣реИ рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рдЖрдк рд╣рдЯрд╛рдирд╛ рд╡рд┐рдзрд┐ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рд╕рдмрд╕реЗ рд╕рд░рд▓ рдЙрджрд╛рд╣рд░рдг рд╣реИ рдХрд┐ рдЖрдк рдирд╣реАрдВ рдЪрд╛рд╣рддреЗ рдХрд┐ name == 'Root' рд╡рд╛рд▓рд╛ рдореЙрдбрд▓ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рдПред рдорди рдореЗрдВ рдЖрдиреЗ рд╡рд╛рд▓реА рдкрд╣рд▓реА рдЪреАрдЬ рдмрд╕ рд╡рд╛рдВрдЫрд┐рдд рдореЙрдбрд▓ рдХреЗ рд▓рд┐рдП рдбрд┐рд▓реАрдЯ () рд╡рд┐рдзрд┐ рдХреЛ рдУрд╡рд░рд░рд╛рдЗрдб рдХрд░рдирд╛ рд╣реИ:

 class SomeModel(models.Model): name = models.CharField('name', max_length=100) def delete(self, *args, **kwargs): if self.name == 'Root': print('No, man, i am not deletable! Give up!') #   "Root"    else: super(SomeModel, self).delete(*args, **kwargs) #    -   delete() 

рдЗрд╕рдХреА рдЬрд╛рдБрдЪ рдХрд░реЗрдВ?



рдпрд╣ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ! рдЕрдм рд╣рдо рдРрд╕рд╛ рд╣реА рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореЙрдбрд▓ рдХреА рд╕реВрдЪреА рдХреЗ рдкреЗрдЬ рд╕реЗ:



рд╣рдЯрд╛рдПрдВ () рдирд╣реАрдВ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ, рдореЙрдбрд▓ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИред
рдХреНрдпрд╛ рдпрд╣ рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╣реИ? рд╣рд╛рдВ
рдРрд╕рд╛ рдХреНрдпреЛрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ? рджрдХреНрд╖рддрд╛ рдХреЗ рд▓рд┐рдПред
рдХреНрдпрд╛ рдпрд╣ рджрдХреНрд╖рддрд╛ рдирд┐рд╣рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЗ рд▓рд╛рдпрдХ рд╣реИ? рд╢рд╛рдпрдж рд╣реАред
рдХреНрдпрд╛ рдХрд░реЗрдВ? рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╕рд╛рдореВрд╣рд┐рдХ рдирд┐рд╖реНрдХрд╛рд╕рди рдХреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрдХреНрд╖рдо рдХрд░реЗрдВ (рдореЙрдбрд▓ рд╕реВрдЪреА рдкреГрд╖реНрда рд╕реЗ):
 class SomeModelAdmin(admin.ModelAdmin): model = SomeModel def get_actions(self, request): actions = super(self.__class__, self).get_actions(request) if 'delete_selected' in actions: del actions['delete_selected'] return actions 


рдпреЗ рдкрд╣рд▓реА django рд░реЗрдХ рдереАрдВ рдЬрд┐рд╕ рдкрд░ рдореИрдВрдиреЗ рдХрджрдо рд░рдЦрд╛ рдерд╛ред рдФрд░ рд╣рд░ рдирдП рдкреНрд░реЛрдЬреЗрдХреНрдЯ рдореЗрдВ рдореБрдЭреЗ рдЗрд╕ рд╡реНрдпрд╡рд╣рд╛рд░ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рд░рдЦрдирд╛ рд╣реЛрдЧрд╛ рдФрд░ рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рднреВрд▓рдирд╛ рдЪрд╛рд╣рд┐рдПред

2. рд╡реИрдз


рдПрдХ рд╕рддреНрдпрд╛рдкрдирдХрд░реНрддрд╛ рдПрдХ рдРрд╕рд╛ рдлрд╝рдВрдХреНрд╢рди рд╣реИ рдЬреЛ рдорд╛рди рдХреЛ рдлреЗрдВрдХрдиреЗ рд╡рд╛рд▓реЗ рдореВрд▓реНрдп рдореЗрдВ рд▓реЗрддрд╛ рд╣реИ рдпрджрд┐ рдорд╛рди рдХреБрдЫ рдорд╛рдирджрдВрдб рд╕реЗ рдлрд┐рдЯ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рдпрджрд┐ рдЖрдкрдХреЛ рд╡рд┐рднрд┐рдиреНрди рдкреНрд░рдХрд╛рд░ рдХреЗ рдХреНрд╖реЗрддреНрд░реЛрдВ рдкрд░ рдХрд┐рд╕реА рдкреНрд░рдХрд╛рд░ рдХреЗ рд╕рддреНрдпрд╛рдкрди рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рддреЛ рд╕рддреНрдпрд╛рдкрдирдХрд░реНрддрд╛ рдЙрдкрдпреЛрдЧреА рд╣реЛ рд╕рдХрддреЗ рд╣реИрдВред

рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдХрд┐рд╕реА рд░реЗрдЧреБрд▓рд░ рдПрдХреНрд╕рдкреНрд░реЗрд╢рди рдХреЗ рд╡рд┐рд░реБрджреНрдз рдлрд╝реАрд▓реНрдб рдХреА рдЬрд╛рдБрдЪ рдХрд░рдирд╛: RegexValidator ред
name рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдХреЗрд╡рд▓ рдЕрдХреНрд╖рд░ рдХреА рдЕрдиреБрдорддрд┐ рджреЗрдВ:
 class SomeModel(models.Model): name = models.CharField('name', max_length=100, validators=[RegexValidator(regex=r'^[a-zA-Z]+$')]) 



рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдкреИрдирд▓ рдореЗрдВ, рд╕рддреНрдпрд╛рдкрди рдХрд╛рд░реНрдп рдХрд░рддрд╛ рд╣реИред рдФрд░ рдпрджрд┐ рдРрд╕рд╛ рд╣реИ:
 # views.py def main(request): new_model = SomeModel.objects.create(name='Whatever you want: 1, 2, 3, etc. Either #&*@^%!)(_') return render( request, 'app/main.html', { 'new_model': new_model, } ) 

Create () рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ, рдЖрдк рдХрд┐рд╕реА рднреА рдирд╛рдо рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рд╕рддреНрдпрд╛рдкрди рдХреЛ рдирд╣реАрдВ рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИ ред

рдХреНрдпрд╛ рдпрд╣ рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╣реИ? рд╣рд╛рдВред
рдХреГрдкрдпрд╛ рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЬрдм рдореЙрдбрд▓ рдХреЛ рд╕рд╣реЗрдЬрд╛ рдЬрд╛рддрд╛ рд╣реИ рддреЛ рд╕рддреНрдпрд╛рдкрдирдХрд░реНрддрд╛рдУрдВ рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдирд╣реАрдВ рдмреБрд▓рд╛рдпрд╛ рдЬрд╛рдПрдЧрд╛, рд▓реЗрдХрд┐рди рдпрджрд┐ рдЖрдк рдореЙрдбрд▓рдлрд╝реЙрд░реНрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЖрдкрдХреЗ рд╕рддреНрдпрд╛рдкрдирдХрд░реНрддрд╛ рдЙрди рдлрд╝реАрд▓реНрдб рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░реЗрдВрдЧреЗ, рдЬреЛ рдлрд╝реЙрд░реНрдо рдореЗрдВ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред

рдХреНрдпрд╛ рдпрд╣ рд╕реНрдкрд╖реНрдЯ рд╣реИ? рдореИрдВрдиреЗ рдИрдорд╛рдирджрд╛рд░реА рд╕реЗ рдПрдХ рдРрд╕реА рд╕реНрдерд┐рддрд┐ рдХреА рдХрд▓реНрдкрдирд╛ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХреА рд╣реИ рдЬрдм рдЖрдкрдХреЛ рдХрд┐рд╕реА рдХреНрд╖реЗрддреНрд░ рдХреЛ рдПрдХ рд░реВрдк рдореЗрдВ рдорд╛рдиреНрдп рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдиреНрдп рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдорд╛рдиреНрдп рдирд╣реАрдВ рд╣реЛрддреА рд╣реИред рдФрд░ рдореЗрд░реЗ рдкрд╛рд╕ рдХреЛрдИ рд╡рд┐рдЪрд╛рд░ рдирд╣реАрдВ рд╣реИред рдХреНрд╖реЗрддреНрд░ рдХреЛ рд╡реИрд╢реНрд╡рд┐рдХ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рд╕рддреНрдпрд╛рдкрди рдХрд░рдирд╛ рдЕрдзрд┐рдХ рддрд░реНрдХрд╕рдВрдЧрдд рд╣реИ - рдЕрд░реНрдерд╛рддреН, рдпрджрд┐ рдпрд╣ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдХреЗрд╡рд▓ рдЕрдХреНрд╖рд░, рддреЛ рд╕рдм рдХреБрдЫ, рджреБрд╢реНрдорди рдкрд╛рд╕ рдирд╣реАрдВ рд╣реЛрдЧрд╛, рдХреЛрдИ рдкрд╕рд╛рд░рди рдирд╣реАрдВ - рдЖрдк рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдЗрд╕рдХреЗ рдЖрд╕рдкрд╛рд╕ рдирд╣реАрдВ рдкрд╣реБрдВрдЪ рд╕рдХрддреЗред рдпрджрд┐ рдЖрдк рдЗрд╕ рдкреНрд░рддрд┐рдмрдВрдз рдХреЛ рд╣рдЯрд╛рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ model.save () рдХреЛ рдлрд┐рд░ рд╕реЗ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░реЗрдВ рдФрд░ рдпрджрд┐ рдЖрд╡рд╢реНрдпрдХ рд╣реЛ рддреЛ рд╕рддреНрдпрд╛рдкрди рдХреЛ рдЕрдХреНрд╖рдо рдХрд░реЗрдВред
рдХреНрдпрд╛ рдХрд░реЗрдВ? рдмрдЪрдд рдХрд░рдиреЗ рд╕реЗ рдкрд╣рд▓реЗ рд╕рддреНрдпрд╛рдкрди рдХреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдХрд╣реЗрдВ:
 @receiver(pre_save, sender=SomeModel) def validate_some_model(instance, **kwargs): instance.full_clean() 


3. рджреЛ рдкреНрд░рд╡реЗрд╢


рдорд┐рд╢рд╛ рдФрд░ рдкреЗрдЯреНрдпрд╛ рдиреЗ рд╕рд╛рдЗрдЯ рдХрд╛ рд╕рдВрдЪрд╛рд▓рди рдХрд┐рдпрд╛ред рд╣рдЬрд╛рд░рд╡реЗрдВ рд░рд┐рдХреЙрд░реНрдб рдХреЗ рдмрд╛рдж, рдорд┐рд╢рд╛ рдиреЗ # 1001 ("рдЬреАрд╡рди рдХрд╛ рдЕрд░реНрде рдХреНрдпрд╛ рд╣реИ") рдХреЗ рд▓рд┐рдП рд╕рдВрдкрд╛рджрди рдлрд╝реЙрд░реНрдо рдХреЛ рдЦреБрд▓рд╛ рдЫреЛрдбрд╝ рджрд┐рдпрд╛ рдФрд░ рдЪрд╛рдп рдкреАрдиреЗ рдЪрд▓реА рдЧрдИрдВред рдЗрд╕ рд╕рдордп, рдкреЗрдЯреНрдпрд╛ рдиреЗ рдПрдХ рд╣реА рд░рд┐рдХреЙрд░реНрдб # 1001 рдЦреЛрд▓рд╛ рдФрд░ рдЗрд╕рдХрд╛ рдирд╛рдо рдмрджрд▓ рджрд┐рдпрд╛ ("рдХреЛрдИ рдорддрд▓рдм рдирд╣реАрдВ рд╣реИ")ред рдорд┐рд╢рд╛ рд▓реМрдЯ рдЖрдП ("рдкреБрд░рд╛рдирд╛" рд░рд┐рдХреЙрд░реНрдб "рдЬреАрд╡рди рдХрд╛ рдЕрд░реНрде рдХреНрдпрд╛ рд╣реИ" рдЕрднреА рднреА рдЦреБрд▓рд╛ рд╣реИ) рдФрд░ "рд╕рд╣реЗрдЬреЗрдВ" рдкрд░ рдХреНрд▓рд┐рдХ рдХрд┐рдпрд╛ред рдкреЗрдЯрд┐рдЯ рдХреЗ рд▓реЗрдЦрди рдХреЛ рдЬрд╛рдо рдХрд░ рджрд┐рдпрд╛ рдЧрдпрд╛ред

рдЗрд╕реЗ " рдСрдкреНрдЯрд┐рдорд┐рд╕реНрдЯрд┐рдХ рд▓реЙрдХрд┐рдВрдЧ / рдСрдкреНрдЯрд┐рдорд┐рд╕реНрдЯрд┐рдХ рдХреЙрдирдПрд░реЗрд╕реА рдХрдВрдЯреНрд░реЛрд▓ " рдХреА рдХрдореА рдХрд╣рд╛ рдЬрд╛рддрд╛ рд╣реИред

рдЕрдЧрд░ рдЖрдкрдХреЛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЗрд╕ рддрд░рд╣ рдХреА рдЯрдХреНрдХрд░ рдХреЗ рд▓рд┐рдП рдЖрдкрдХреЛ рдПрдХ рд╕рд╛рде рдХрд╛рдо рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рджреЛ рдХреА рдЬрд░реВрд░рдд рд╣реИ, рдФрд░ рдЖрдк рд╕рд╛рдЗрдЯ рдХреЛ рдЕрдХреЗрд▓реЗ рдмрдирд╛рдП рд░рдЦрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕рд▓рд┐рдП рдШрд░ рдореЗрдВ рд░рд╣рддреЗ рд╣реИрдВ, рддреЛ рдореИрдВ рдЖрдкрдХреЛ рдкрд░реЗрд╢рд╛рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд▓реНрджрдмрд╛рдЬреА рдХрд░рддрд╛ рд╣реВрдВ: рдпрд╣ рдХреЗрд╡рд▓ рдПрдХ рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рд╣реЛрдиреЗ рдкрд░ рднреА рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдЙрддреНрдкрд╛рдж рдХреЛ рд╕рдВрдкрд╛рджрд┐рдд рдХрд░рддрд╛ рд╣реИ, рдФрд░ рдЙрд╕ рдкрд▓ рдореЗрдВ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдиреЗ quantity рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдореВрд▓реНрдп рдШрдЯрд╛рдХрд░ рдЙрддреНрдкрд╛рдж рдЦрд░реАрджрд╛ рд╣реИред рд╡реНрдпрд╡рд╕реНрдерд╛рдкрдХ рдореЗрдВ, quantity рдлрд╝реАрд▓реНрдб рдореЗрдВ рдкреБрд░рд╛рдирд╛ рдорд╛рди рд╣реЛрддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдЬреИрд╕реЗ рд╣реА рд╡рд╣ рдХреНрд▓рд┐рдХ рдХрд░рддрд╛ рд╣реИ рд╕рд╣реЗрдЬреЗрдВ ...

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

рдХреНрдпрд╛ рдпрд╣ рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рд╡рд░реНрдгрд┐рдд рд╣реИ? рдирд╣реАрдВред
рдХреНрдпрд╛ рдХрд░реЗрдВ?

рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ - рдкреНрд░рддреНрдпреЗрдХ рдореЙрдбрд▓ рдХреЗ рд▓рд┐рдП рд╣рдо version рдлрд╝реАрд▓реНрдб рдмрдирд╛рддреЗ рд╣реИрдВ, рдЬрдм рдмрдЪрдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдЬрд╛рдВрдЪреЗрдВ рдХрд┐ рд╕рдВрд╕реНрдХрд░рдг рдмрджрд▓ рдирд╣реАрдВ рдЧрдпрд╛ рд╣реИ, рдФрд░ рдЗрд╕рдХреЗ рдореВрд▓реНрдп рдореЗрдВ 1. рд╡реГрджреНрдзрд┐ рд╣реБрдИ рд╣реИред рдпрджрд┐ рдпрд╣ рдмрджрд▓ рдЧрдпрд╛ рд╣реИ, рддреЛ рдПрдХ рдЕрдкрд╡рд╛рдж рдлреЗрдВрдХ рджреЗрдВ (рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рдХрд┐рд╕реА рдФрд░ рдиреЗ рдкрд╣рд▓реЗ рд╣реА рд░рд┐рдХреЙрд░реНрдб рдмрджрд▓ рджрд┐рдпрд╛ рд╣реИ)ред

рдиреИрддрд┐рдХрддрд╛


рдЕрдВрдд рдореЗрдВ, рдореИрдВ рд╡рд╣реА рджреЛрд╣рд░рд╛рдКрдВрдЧрд╛ рдЬреЛ рдореИрдВрдиреЗ рд╢реБрд░реВ рдХрд┐рдпрд╛ рдерд╛:
Django рдЖрдкрдХреЗ рд╕реЛрдЪрдиреЗ рдХреЗ рддрд░реАрдХреЗ рдкрд░ рдХрд╛рдо рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред Django рдареАрдХ рдЙрд╕реА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдЬреИрд╕рд╛ рдЗрд╕рдХреЗ рдкреНрд░рд▓реЗрдЦрди рдореЗрдВ рд▓рд┐рдЦрд╛ рдЧрдпрд╛ рд╣реИред рди рдЬреНрдпрд╛рджрд╛ рди рдХрдоред

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

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


All Articles