django.newforms: рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВред

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



рдпрд╣ рд╕рдм рдмрд╕ рдЗрд╕ рдХреЛрдб рдХреЗ рд╕рд╛рде рд╢реБрд░реВ рд╣реБрдЖ:



 django рд╕реЗ рдлреЙрд░реНрдо рдХреЗ рд░реВрдк рдореЗрдВ newforms рдЖрдпрд╛рдд <br />
 рд╡рд░реНрдЧ AddPlaceForm (рдлрд╝реЙрд░реНрдоред рдлрд╛рд░реНрдо):
     рд╢реАрд░реНрд╖рдХ = рд░реВрдк редCFField (max_length = 50)
     рд╢реНрд░реЗрдгреА = рд░реВрдкреЛрдВред IntegerField ()
     рдкрд╛рда = рд░реВрдк редCharField (рд╡рд┐рдЬреЗрдЯ = рд░реВрдкред рдЯреЗрдХреНрд╕реНрдЯрд░реА)
     рдЯреИрдЧреНрд╕ = рд░реВрдкред рдЪрд░рдлрд┐рд▓реНрдб (рдЕрдзрд┐рдХрддрдо_рд▓рд╛рдн = 50))
     рд╢рд╣рд░ = рд░реВрдкреЛрдВред IntegerField ()
     рдореЗрдЯреНрд░реЛрд╕реНрдЯреЗрд╢рди = рд░реВрдкреЛрдВред IntegerField (null = True)
     рдПрдбреНрд░реЗрд╕ = рдлреЙрд░реНрдореНрд╕.рдЪрд╛рд░реНрдлрд┐рд▓реНрдб (рдЕрдзрд┐рдХрддрдо_ рдЧрддрд┐ = 255)




рд▓реЗрдХрд┐рди рддрдм рдПрдХ рд╡рд┐рдЪрд╛рд░ рдкреНрд░рдХрдЯ рд╣реБрдЖ, рдФрд░ рдПрдХ рдирд╣реАрдВ:



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



     рдбреАрдлрд╝ рдХреНрд▓реАрди (рд╕реНрд╡, рдореВрд▓реНрдп):
	 my.site.models рдЖрдпрд╛рдд рд╢реНрд░реЗрдгреА рд╕реЗ
	 рдкреНрд░рдпрд╛рд╕ рдХрд░реЗрдВ:
		 рдЖрдЗрдЯрдо = рд╢реНрд░реЗрдгреА.objects.get (pk = рдорд╛рди)
        	 рд╡рд╛рдкрд╕реА рдЖрдЗрдЯрдо
	 ObjectDoesNotExist рдХреЛ рдЫреЛрдбрд╝рдХрд░:
		 рдкреНрд░рдкрддреНрд░реЛрдВ рдХреЛ рдЬрдорд╛ рдХрд░реЗрдВред рдЕрдорд╛рдиреНрдпрдХрд░рдг (u'Invalid рдЗрдирдкреБрдЯ ')




рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛ рд╕рднреА рдЖрдХрд░реНрд╖рдг рдХреЗ рд▓рд┐рдП, clean_data ['рд╢реНрд░реЗрдгреА'] рдореЗрдВ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рддреИрдпрд╛рд░ рдПрдХ рд╡рд╕реНрддреБ рд╣реЛрдЧреАред рддрдм рдПрдХ рдЪрд┐рд░рд╛рдЧ рдерд╛, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдкреНрд░рддреНрдпреЗрдХ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП рдПрдХ рдлрд╝реАрд▓реНрдб рдмрдирд╛рдирд╛ рд╣реЛрдЧрд╛ред рд╕рд╛рде рд╣реА, рдореИрдВрдиреЗ рдорд╛рдиреЛрдВ рдХреЗ рд╕рд╛рде рд╕реНрд╡рддрдГ-рднрд░рдг рдХреА рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИред рдЗрд╕рд▓рд┐рдП, рдПрдХ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рд╡рд░реНрдЧ рдмрдирд╛рдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдЧрдпрд╛ред



  рд╡рд░реНрдЧ SelectFromModel (form.Field):
     рд╡рд┐рдЬреЗрдЯ = рд░реВрдкреЛрдВред рдЪрдпрди ()
     def __init __ (рд╕реНрд╡, рдСрдмреНрдЬреЗрдХреНрдЯ, * рдЖрд░реНрдЧреНрд╕, ** рдХреНрд╡рд╛рд░реНрдЧреНрд╕):
         self.objects = рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕
         рд╕реБрдкрд░ (SelectFromModel, рд╕реНрд╡) .__ init __ (* рдЖрд░реНрдЧреНрд╕, ** рдХрд╡рд░реНрд╕)
         рд╕реЗрд▓реНрдл рд▓реЛрдбреНрд╕ ()
     рдбреАрдИрдПрдлрд╝ рд▓реЛрдбрд╢реЙрдЗрд╕ (рд╕реНрд╡):
         рд╡рд┐рдХрд▓реНрдк = ()
         self.objects.order_by ('рд╢реАрд░реНрд╖рдХ') рдореЗрдВ рдСрдмреНрдЬреЗрдХреНрдЯ рдХреЗ рд▓рд┐рдП:
             рд╡рд┐рдХрд▓реНрдк + = ((object.id, object.title),)
         self.widget.choices = рд╡рд┐рдХрд▓реНрдк
     рдбреАрдлрд╝ рдХреНрд▓реАрди (рд╕реНрд╡, рдореВрд▓реНрдп):
         рдорд╛рди = int (рдорд╛рди)
         cat_id рдХреЗ рд▓рд┐рдП, cat.title in self.widget.choices:
             рдЕрдЧрд░ cat_id == рдорд╛рди:
                 рд╕реНрд╡рдВрдп рдХреЛ рд╡рд╛рдкрд╕ рднреЗрдЬреЗрдВред рд╡рд┐рд╢реЗрд╖рдг (pk = cat_id)
         рдкреНрд░рдкрддреНрд░реЛрдВ рдХреЛ рдЬрдорд╛ рдХрд░реЗрдВред рдЕрдорд╛рдиреНрдпрдХрд░рдг (u'Invalid рдЗрдирдкреБрдЯ ')

 # рдлрд╛рд░реНрдо рдХреЗ рдЕрдиреБрд╕рд╛рд░
 рд╡рд░реНрдЧ AddPlaceForm (рдлрд╝реЙрд░реНрдоред рдлрд╛рд░реНрдо):
     рд╢реАрд░реНрд╖рдХ = рд░реВрдк редCFField (max_length = 50)
     рд╢реНрд░реЗрдгреА = SelectFromModel (рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ = рд╢реНрд░реЗрдгреА.objects.all ())
     рдкрд╛рда = рд░реВрдк редCharField (рд╡рд┐рдЬреЗрдЯ = рд░реВрдкред рдЯреЗрдХреНрд╕реНрдЯрд░реА)
     # рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдереЛрдбрд╝реА рджреЗрд░ рдмрд╛рдж
     рдЯреИрдЧ = рдЯреИрдЧрдлрд┐рд▓реНрдб ()
     рд╢рд╣рд░ = SelectFromModel (рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ = City.objects.all ())
     рдореЗрдЯреНрд░реЛрд╕реНрдЯреЗрд╢рди = SelectFromModel (рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ = MetroStation.objects.all ())
     рдПрдбреНрд░реЗрд╕ = рдлреЙрд░реНрдореНрд╕.рдЪрд╛рд░реНрдлрд┐рд▓реНрдб (рдЕрдзрд┐рдХрддрдо_ рдЧрддрд┐ = 255)




рддреЛ, рдпрд╣ рдХреНрдпрд╛ рд╣реИ, рдФрд░ рд╕рдмрд╕реЗ рдорд╣рддреНрд╡рдкреВрд░реНрдг рдмрд╛рдд, "рдХрдордмрдЦреНрдд"ред рдореИрдВрдиреЗ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдХреНрд╖реЗрддреНрд░ рдХрд╛ рд╡рдВрд╢рдЬ рдмрдирд╛рдпрд╛, рдЬрд┐рд╕рдореЗрдВ рдореИрдВрдиреЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд╡рд┐рдЬреЗрдЯ рдХреЛ рд░реВрдкреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд┐рдпрд╛ред рдЪрдпрди (рдЬреЛ рдПрдХ рд╕рд╛рдорд╛рдиреНрдп рдбреНрд░реЙрдк-рдбрд╛рдЙрди рд╕реВрдЪреА рд╣реИ), рдбреЗрдЯрд╛ рдЬрд┐рд╕рдореЗрдВ рдлрд╝реАрд▓реНрдб рдмрдирд╛рддреЗ рд╕рдордп рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рд▓реЛрдб рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдЙрд╕реА рд╕рдордп, рд╣рдо рд▓рдЪреАрд▓рд╛рдкрди рдирд╣реАрдВ рдЦреЛрддреЗ рд╣реИрдВ ... рд╣рдо рднреА рдЬреЛрдбрд╝рддреЗ рд╣реИрдВред рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рднрд░рдиреЗ рдХреЗ рдЪрдХреНрд░ рдореЗрдВ order_by ('рд╢реАрд░реНрд╖рдХ') рд╢рд╛рдирджрд╛рд░ рд╣реИ (рд▓реЗрдХрд┐рди рдореИрдВрдиреЗ рдЗрд╕реЗ рдЙрджреНрджреЗрд╢реНрдпрдкреВрд░реНрдг рддрд░реАрдХреЗ рд╕реЗ рдХрд┐рдпрд╛ рд╣реИ рддрд╛рдХрд┐ рдХреНрд╖реЗрддреНрд░ рдмрдирд╛рддреЗ рд╕рдордп рд╣рд░ рдмрд╛рд░ рдЫрдВрдЯрд╛рдИ рди рдЬреЛрдбрд╝реЗрдВ)ред рд▓рдЪреАрд▓рд╛рдкрди рдХреНрдпрд╛ рд╣реИ рдХрд┐рд╕реА рд░реВрдк рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реБрдП (рдЕрдзрд┐рдХ рд╕рдЯреАрдХ рд░реВрдк рд╕реЗ, рдПрдХ рдлреЙрд░реНрдо рдлрд╝реАрд▓реНрдб), рд╣рдо рдЙрди рд╡рд╕реНрддреБрдУрдВ рдХреЗ рдПрдХ рдЪрдХреНрд░ рдХреЛ рдкрд░рд┐рднрд╛рд╖рд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рдирдХреЗ рджреНрд╡рд╛рд░рд╛ рд╣рдо рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЛ рдЪрдпрди рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВред рдЕрдзрд┐рдХ рд╕рдЯреАрдХ рд░реВрдк рд╕реЗ, рд╣рдо рдЙрд╕ рдСрдмреНрдЬреЗрдХреНрдЯ рдЪрд░ рдХреЛ рдкрд╛рд╕ рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рд╕рдХреЗ рджреНрд╡рд╛рд░рд╛ рдЗрди рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рдХреЛ рдЪреБрдирд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдП (LazyLoad)ред рд▓рдЪреАрд▓рд╛рдкрди рдпрд╣ рд╣реИ рдХрд┐ рд╣рдо рдЖрд╕рд╛рдиреА рд╕реЗ рд╡рд┐рдЬреЗрдЯ рдХреЛ рдПрдХ рд╕рдорд╛рди рдПрдХ рдХреЛ рдЪреБрдирдХрд░ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ (рдЬреЛ, рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдпреЛрдЬрдирд╛рдмрджреНрдз рд╣реИ)ред



рдЗрд╕рдХреЗ рдмрд╛рдж рдЯреИрдЧ рдХреНрд╖реЗрддреНрд░ рдХреЗ рд╕рд╛рде рд╕рд╡рд╛рд▓ рд╣реИред рдЗрд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрдИ рд░реВрдкреЛрдВ рдореЗрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рдПрдХ рдЕрд▓рдЧ рд╡рд░реНрдЧ рдореЗрдВ рд░рдЦрдиреЗ рдХрд╛ рдирд┐рд░реНрдгрдп рд▓рд┐рдпрд╛ рдЧрдпрд╛ рдерд╛, рдХреНрдпреЛрдВрдХрд┐ рдЗрд╕реЗ рдЖрдзреБрдирд┐рдХреАрдХрд░рдг рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдорд╛рдирд╛ рдЬрд╛рддрд╛ рд╣реИ (рд╕реНрд╡рдд: рдкреВрд░реНрдг, рдЯреИрдЧ рдХреЛ рдЕрд▓рдЧ рдХрд░рдиреЗ рдХреЗ рддрд░реАрдХреЗ рдЖрджрд┐)ред рд╕рд┐рджреНрдзрд╛рдВрдд рд░реВрдк рдореЗрдВ, рдпрд╣рд╛рдБ рдХреЛрдб рд╣реИ:



  рд╡рд░реНрдЧ рдЯреИрдЧрдлрд┐рд▓реНрдб (рдкреНрд░рдкрддреНрд░.рдЪрд╛рд░реНрдлрд┐рд▓реНрдб):
     рдбреАрдлрд╝ рдХреНрд▓реАрди (рд╕реНрд╡, рдореВрд▓реНрдп):
         daparty.site.models рд╕реЗ рдЖрдпрд╛рдд рдЯреИрдЧ, TagCynonym
         рдЯреИрдЧреНрд╕ = value.split (',')
         resoult = []
         рдЯреИрдЧ рдореЗрдВ рдЯреИрдЧ рдХреЗ рд▓рд┐рдП:
             рдЯреИрдЧ = рдЯреИрдЧ.рд╕реНрдЯреНрд░рд┐рдк ()ред рдирд┐рдЪрд▓рд╛ ()
             # рдореМрдЬреВрджрд╛ рдЯреИрдЧ рдореЗрдВ рдЦреЛрдЬреЗрдВ рдпрд╛ рдмрдирд╛рдПрдВ
             dbtag = Tag.objects.get_or_create (рд╢реАрд░реНрд╖рдХ = рдЯреИрдЧ)
             resoult.append (dbtag)
         рд╡рд╛рдкрд╕реА рдХрд░реЗрдВ




рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рд╣рдо рд╕рд┐рд░реНрдл рдпрд╣ рджреЗрдЦрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ рдХреНрдпрд╛ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдРрд╕рд╛ рдХреЛрдИ рдЯреИрдЧ рд╣реИ, рдпрджрд┐ рдирд╣реАрдВ, рддреЛ рдЗрд╕реЗ рдмрдирд╛рдПрдВ, рдпрджрд┐ рд╣рд╛рдВ, рддреЛ рдЗрд╕рдХрд╛ рдЪрдпрди рдХрд░реЗрдВ рдФрд░ рдЗрд╕реЗ рдПрдХ рдкрд░рд┐рдгрд╛рдо рдХреЗ рд░реВрдк рдореЗрдВ рд▓реМрдЯрд╛рдПрдВред рдЖрдкрдХреЛ рдорд╢реАрди рдкрд░ рд░рд┐рд╡рд░реНрд╕ рдСрдкрд░реЗрд╢рди (рд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рдЯреИрдЧ рдСрдмреНрдЬреЗрдХреНрдЯ) рдХреИрд╕реЗ рдХрд░рдирд╛ рд╣реИ, рдЗрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рднреА рд╕реЛрдЪрдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ, рд▓реЗрдХрд┐рди рдЗрд╕реЗ рд╣реЛрдорд╡рд░реНрдХ рд╣реЛрдиреЗ рджреЗрдВ (рдЗрд╕ рдорд╛рдорд▓реЗ рдореЗрдВ рд▓реЗрдЦрдХ рдХреА рдЕрдХреНрд╖рдорддрд╛ рдХреЛ рдЫрд┐рдкрд╛рдиреЗ рдХреЗ рд▓рд┐рдП :)ред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдХрдИ TagCynonym рд╡рд░реНрдЧ рдХреЛ рдиреЛрдЯрд┐рд╕ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рдореИрдВ рдЕрднреА рднреА рд╕реЛрдЪ рд░рд╣рд╛ рд╣реВрдВ рдХрд┐ рд╡рд┐рднрд┐рдиреНрди рдЯреИрдЧ (рдкреЛрд░реНрди - рдкреЛрд░реНрдиреЛ) рдХреА рддреБрд▓рдирд╛ рдХреИрд╕реЗ рдХреА рдЬрд╛рдПред



рд╕рдВрджрд░реНрдн:





UPD: рдореБрдЭреЗ рдЖрд╢реНрдЪрд░реНрдп рд╣реИ рдХрд┐ рдХрд░реНрдо рдХреЗ рд▓рд┐рдП рдХрдо рдХреНрдпреЛрдВ?) рд╢рд╛рдпрдж PHP рдкреНрд░реЗрдореА)))



All Articles