рд╣рдо рдХрд┐рд╕ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░ рд░рд╣реЗ рд╣реИрдВ? рдмреЗрд╢рдХ, рд╕рд┐рдВрдЯреИрдХреНрдЯрд┐рдХ рд╢реБрдЧрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рд╕реЗ рд╕рд┐рдВрдЯреИрдХреНрдЯрд┐рдХ рдбрд╛рдпрдмрд┐рдЯреАрдЬ рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдпрд╣ рдЖрдкрдХреЛ рд╕реЛрдЪрдиреЗ рд╕реЗ рд░реЛрдХ рд╕рдХрддрд╛ рд╣реИред рдпрд╣ рдЕрдЬреАрдм рд▓рдЧ рд╕рдХрддрд╛ рд╣реИ, рдпрд╣ рджреЗрдЦрддреЗ рд╣реБрдП рдХрд┐ рд╕рд┐рдВрдЯреИрдХреНрдЯрд┐рдХ рд╢реБрдЧрд░ рдХреЛ рд╣рдорд╛рд░реЗ рдЬреАрд╡рди рдХреЛ рдЖрд╕рд╛рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдбрд┐рдЬрд╝рд╛рдЗрди рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ: рд╕рд╣рдЬ рдЬреНрдЮрд╛рди рдпреБрдХреНрдд рдЖрд╡рд░рдгреЛрдВ рдореЗрдВ рдЕрдореВрд░реНрдд рдкрд░ рд╕рдВрдЪрд╛рд▓рди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреЛ рдкрдврд╝рдиреЗ рдХреЗ рд▓рд┐рдП рдЖрд╕рд╛рди рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рдФрд░ рдмрд╕ рдкреНрдпрд╛рд░рд╛ред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдХреЛрдИ рднреА рдЙрдкрдХрд░рдг рдЬреЛ рд╣рдорд╛рд░реЗ рд╡рд┐рдЪрд╛рд░ рдХреЛ рдПрдХ рд╕рд╛рде рдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд░рддрд╛ рд╣реИ, рдЙрд╕реЗ рдЙрд╕реА рджрд┐рд╢рд╛ рдореЗрдВ рд░рдЦрддрд╛ рд╣реИред
рдпрд╣рд╛рдВ рдХреА рд╕реНрдерд┐рддрд┐ рдЙрди рд╕рдбрд╝рдХреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдПрдХ рдордЬрд╛рдХ рдХреА рддрд░рд╣ рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдЕрдореЗрд░рд┐рдХреА рджрд╛рд╡рд╛ рдХрд░рддреЗ рд╣реИрдВ:
- рдЬрдм рдореИрдВ рд╕рдбрд╝рдХ рдкрд░ рдбреНрд░рд╛рдЗрд╡ рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдореИрдВ рд╣реБрдб рдкрд░ рдПрдХ рдЧрд┐рд▓рд╛рд╕ рдкрд╛рдиреА рдбрд╛рд▓рддрд╛ рд╣реВрдВ рдФрд░ 100 рдХрд┐рдореА / рдШрдВрдЯрд╛ рдХреА рдЧрддрд┐ рд╕реЗ рдбреНрд░рд╛рдЗрд╡ рдХрд░рддрд╛ рд╣реВрдВред рдкрд╛рдиреА рдХреА рдПрдХ рднреА рдмреВрдВрдж рдирд╣реАрдВ рдЫрд▓рдХрддреАред
рд░реВрд╕реА рдХреНрдпрд╛ рдХрд╣рддрд╛ рд╣реИ:
- рдФрд░ рд╣рдо рд╕рднреА рдкреАрдЫреЗ рдХреА рд╕реАрдЯ рдкрд░ рдЪрдврд╝ рдЧрдП рдФрд░ рдкреВрд░реЗ рд░рд╛рд╕реНрддреЗ рдХрд╛рд░реНрдб рдХрд╛рдЯ рджрд┐рдП, рд▓реЗрдХрд┐рди рд╣рдордиреЗ рдмреАрдпрд░ рдкреАред
- рдФрд░ рдорд╢реАрди рдХреЛ рдХреМрди рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реИ ?!
- рд▓реЗрдХрд┐рди рд╡рд╣ рдХрд╣рд╛рдБ рдЬрд╛ рд░рд╣рд╛ рд╣реИ?
рдпрд╣ рдордЬрд╝реЗрджрд╛рд░ рд╣реИ, рд▓реЗрдХрд┐рди рдЖрд░рд╛рдорджрд╛рдпрдХ рд╣реИ, рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореИрдВ рдкреАрдЫреЗ рдХреА рд╕реАрдЯ рдкрд░ рдЙрди рд▓реЛрдЧреЛрдВ рд╕реЗ рднреА рдИрд░реНрд╖реНрдпрд╛ рдХрд░реВрдВрдЧрд╛, рдЕрдЧрд░ рдореЗрд░реЗ рдкрд╛рд╕ рд╕рд┐рдВрдереЗрдЯрд┐рдХ рдЪреАрдиреА рдирд╣реАрдВ рд╣реИред рдЯреНрд░реИрдХ рдЗрд╕рдореЗрдВ рдЕрдЪреНрдЫрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЖрдкрдХреЛ рдпрд╣ рд╕реЛрдЪрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдХреИрд╕реЗ рдбреНрд░рд╛рдЗрд╡ рдХрд░рддреЗ рд╣реИрдВ, рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдЪреАрдиреА рдЖрдкрдХреЛ рдпрд╣ рд╕реЛрдЪрдиреЗ рдХреА рдЕрдиреБрдорддрд┐ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ рдХрд┐ рдЖрдк рдХреИрд╕реЗ рд▓рд┐рдЦрддреЗ рд╣реИрдВ, рдорд╕реНрддрд┐рд╖реНрдХ рдХреЛ рдХрд╛рд░реНрдп рдкрд░ рдзреНрдпрд╛рди рдХреЗрдВрджреНрд░рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореБрдХреНрдд рдХрд░рддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдХреНрдпрд╛ рд╣реЛрдЧрд╛ рдЕрдЧрд░ рдореБрдЭреЗ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╣рд▓ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдЕрдЬреАрдм рдХрд░рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ? рдкрдЯрд░реА рд╕реЗ рдЙрддрд░реЗрдВ? рд╕рдорд╕реНрдпрд╛ рдпрд╣ рдирд╣реАрдВ рд╣реИ рдХрд┐ рдЗрд╕рд╕реЗ рдмрд╛рд╣рд░ рдирд┐рдХрд▓рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ, рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рд╣рдорд╛рд░реЗ рд╡рд┐рдЪрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдХрдард┐рди рд╣реИ - рдпрд╣ рдмрд╕ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИ рдХрд┐ рдЪреАрдЬреЛрдВ рдХреЛ рдХрд░рдиреЗ рдХреЗ рдЕрдиреНрдп рддрд░реАрдХреЗ рд╣реИрдВред
рд▓реЗрдХрд┐рди рдкрд░реНрдпрд╛рдкреНрдд рд╕рд┐рджреНрдзрд╛рдВрдд, рдпрд╣ рдЖрдкрдХреЗ рд╣рд╛рдереЛрдВ рдХреЛ рдЧрдВрджрд╛ рдХрд░рдиреЗ рдХрд╛ рд╕рдордп рд╣реИред рдореИрдВ рдПрдХ рдЙрджрд╛рд╣рд░рдг рджреВрдВрдЧрд╛ред рдорд╛рди рд▓реЗрдВ рдХрд┐ рд╣рдо ORM рд▓рд┐рдЦрддреЗ рд╣реИрдВ рдФрд░ рдХреБрдЫ рдмрд┐рдВрджреБ рдкрд░ рд╣рдореЗрдВ рдХреНрд░рдо рдореЗрдВ рдореЙрдбрд▓ рдлрд╝реАрд▓реНрдб рдирд╛рдореЛрдВ рдХреА рдПрдХ рд╕реВрдЪреА рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, SQL рдХреНрд╡реЗрд░реА рдХреА рд░рдЪрдирд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдорд╛рди рд▓реАрдЬрд┐рдП рдХрд┐ рдлрд╝реАрд▓реНрдб рдСрдмреНрдЬреЗрдХреНрдЯреНрд╕ рд╣реИрдВ рдЬрд┐рдирдХреЗ рдкрд╛рд╕ рдлрд╝реАрд▓реНрдб рдХреЗ рдирд╛рдо рд╡рд╛рд▓реА рдПрдХ рд╕рдВрдкрддреНрддрд┐ рд╣реИред рдмрд╕ рд╡реНрдпрд╛рдкрд╛рд░! рдЖрдкрдХреЛ рдмрд╕ рд╕рднреА рдХреНрд╖реЗрддреНрд░реЛрдВ рд╕реЗ рдЧреБрдЬрд░рдирд╛ рд╣реИ, рдирд╛рдо рдмрд╛рд╣рд░ рдирд┐рдХрд╛рд▓рдирд╛ рдФрд░ рдПрдХ рд╕реВрдЪреА рдмрдирд╛рдирд╛ рд╣реИ:
var names = [];
for ( var i = 0 , l = fields.length; i < l; i ++ ) {
names.push(fields[i].name);
}
рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо ORM рдХреЛ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд▓рд┐рдЦ рд░рд╣реЗ рд╣реИрдВ, рдареАрдХ рд╣реИ, рдХреБрдЫ рднреА рдирд╣реАрдВ, рд▓реЛрдЧ рдЗрди рджрд┐рдиреЛрдВ рдмрд╣реБрдд рдЬреНрдпрд╛рджрд╛ рдЕрдЬрдирдмреА рдЪреАрдЬреЗрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВред рдФрд░ рд╡реИрд╕реЗ, рд╣рдо рдкрд╣рд▓реЗ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдЬрд╛рд▓ рдореЗрдВ рдЧрд┐рд░ рдЧрдП - рдПрдХ рд▓реВрдк рдХреЗ рд░реВрдк рдореЗрдВ рд╡реНрдпрд╛рдЦреНрдпрд╛ рдХреА рдЧрдИ, рдФрд░ рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк рд╣рдореЗрдВ рдХреБрдЫ рдЪрд░ рдорд┐рд▓реЗ, рдкреВрд░реНрдгрд╛рдВрдХ, рд╡реЗрддрди рд╡реГрджреНрдзрд┐ рдФрд░ рд╡рд░реНрдЧ рдХреЛрд╖реНрдардХ рдХреА рддреБрд▓рдирд╛ рд╣реБрдИред рдзрд┐рдХреНрдХрд╛рд░ рд╣реИ! рдпрд╣ рддрдм рдирд╣реАрдВ рд╣реИ рдЬрдм рдореИрдВрдиреЗ рдХрд╣рд╛ рдерд╛ рдХрд┐ "рдПрдХ рд░рди рдХреЗ рд▓рд┐рдП рдЬрд╛рдУ"! рдЖрдЗрдП рдлрд┐рд░ рд╕реЗ рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ:
var names = fields.map( function (field) {
return field.name;
});
рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ, рдореИрдВ рдХреИрд╕реЗ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХрд╛ рд╡рд░реНрдгрди рдХрд░рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╣реБрдд рд╕реБрдВрджрд░ рдФрд░ рдмрд╣реБрдд рдХрд░реАрдм рд╣реВрдВ: рдЦреЗрддреЛрдВ - рдлрд╝реАрд▓реНрдбреНрд╕ .рдореИрдк рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрд╛рдирд╛, рдПрдХ рдирд╛рдо - рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдЬрд┐рд╕реЗ рдПрдХ рдирд╛рдо рдорд┐рд▓рддрд╛ рд╣реИред рдПрди-рд╣рд╛рдБ, рдПрдХ рдлрд╝рдВрдХреНрд╢рди, рдЗрд╕рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд░реЗрдВ? рдЖрд░рд╛рдо рд╕реЗ, рд╣рдо рдЕрдкрдиреЗ рдЖрдк рдХреЛ рд╕рдВрдпрдорд┐рдд рдирд╣реАрдВ рдХрд░реЗрдВрдЧреЗ, рд╣рдо рдЕрдЬрдЧрд░ рдореЗрдВ рд╕рдм рдХреБрдЫ рдлрд┐рд░ рд╕реЗ рд▓рд┐рдЦреЗрдВрдЧреЗ:
names = [field . name for field in fields]
рдПрдХ рд▓рд╛рдЗрди! рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣рдо рдЖрджрд░реНрд╢ рддрдХ рдкрд╣реБрдВрдЪ рдЧрдП рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдпрд╣ рд╡рд┐рдХрд▓реНрдк рдХреБрдЫ рдорд╛рдпрдиреЛрдВ рдореЗрдВ рдкрд┐рдЫрд▓реЗ рдПрдХ рд╕реЗ рднреА рдмрджрддрд░ рд╣реИ: рдЗрд╕рдХрд╛ рд╡рд┐рд╕реНрддрд╛рд░ рдХрд░рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ рдФрд░ рдЗрд╕рдХрд╛ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд▓рдЧрднрдЧ рдЕрд╕рдВрднрд╡ рд╣реИред рд╕рдЪ? рдЖрдЗрдП, рдХреЛрд╢рд┐рд╢ рдХрд░реЗрдВ рдХрд┐ рдорд╛рди рд▓реЗрдВ рдХрд┐ рд╣рдореЗрдВ рдХрднреА-рдХрднреА рдлрд╝реАрд▓реНрдб рдирд╛рдореЛрдВ рд╕реЗ рдкрд╣рд▓реЗ рддрд╛рд▓рд┐рдХрд╛ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдкрдирд╛рдо рджреЗрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ:
names = [ " %s . %s " % (alias, field . name) if alias
else field . name for field in fields]
рдпрд╣ рдЕрдм рдФрд░ рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ рд▓рдЧрддрд╛, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рд╣рдореЗрдВ рдХреНрд╖реЗрддреНрд░ рдХреЗ рд▓рд┐рдП рдПрдХ рдЙрдкрдирд╛рдо рджреЗрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ рддреЛ рдХреНрдпрд╛ рд╣реЛрдЧрд╛? рдФрд░ рдЖрдЦрд┐рд░рдХрд╛рд░ рдЗрд╕рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рдРрд╕рд╛ рдХреБрдЫ рдФрд░ рдирд╣реАрдВред рдЦреИрд░, рдЬрдм рд╣рдорд╛рд░рд╛ рдХреЛрдб рдирд┐рдпрдВрддреНрд░рдг рд╕реЗ рдмрд╛рд╣рд░ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╣рдо рдЗрдВрддрдЬрд╛рд░ рдирд╣реАрдВ рдХрд░рддреЗ, рд╣рдо рдЗрд╕реЗ рддреБрд░рдВрдд рд░реЛрдХрддреЗ рд╣реИрдВ:
if alias:
names = [ " %s . %s " % (alias, field . name) for field in fields]
else :
names = [field . name for field in fields]
рд╕реНрдкрд╖реНрдЯрддрд╛ рд▓реМрдЯ рдЖрдИ, рд▓реЗрдХрд┐рди рджреЛрд╣рд░рд╛рд╡ рджрд┐рдЦрд╛рдИ рджрд┐рдпрд╛ред рдпрд╣ рдХреЛрдИ рд╕рдВрдпреЛрдЧ рдирд╣реАрдВ рд╣реИ рдХрд┐ рд╕реВрдЪреА рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпрд╛рдБ рдЬрд┐рдирдХрд╛ рдЙрдкрдпреЛрдЧ рд╣рдо рдПрдХрд▓ рд╡рд╛рдХреНрдп рд░рдЪрдирд╛ рд╕рдВрд░рдЪрдирд╛ рдореЗрдВ рд▓рд┐рдВрдХ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдПрдХ рд░рди рдФрд░ рдПрдХ рдЕрд▓рдЧ рддрддреНрд╡ рдкрд░ рдПрдХ рдСрдкрд░реЗрд╢рди рдХреЗ рд▓рд┐рдП рдХрд░рддреЗ рд╣реИрдВред рдХреЛрдИ рд╕рдорд╕реНрдпрд╛ рдирд╣реАрдВ рд╣реИ, рдмрд╕ рдПрдХ рд╕реВрдЪреА рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдмрдиреА рд░рд╣рдиреА рдЪрд╛рд╣рд┐рдП:
if alias:
get_name = lambda field: " %s . %s " % (alias, field . name)
else :
get_name = lambda field: field . name
names = map (get_name, fields)
... рдпрд╛ рдПрдХ рднреА рдирд╣реАрдВ - рдЬреИрд╕реЗ рд╣реА рд╣рдореЗрдВ рдЪрд▓рд╛рдиреЗ рдФрд░ рд╕рдВрдЪрд╛рд▓рди рдХреА рдЙрд▓рдЭрди рд╕реЗ рдЫреБрдЯрдХрд╛рд░рд╛ рдорд┐рд▓рд╛, рд╕реВрдЪреА рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдЕрдирд╛рд╡рд╢реНрдпрдХ рд╣реЛ рдЧрдИред рдпрд╣рд╛рдВ рдПрдХ рдФрд░ рджрд┐рд▓рдЪрд╕реНрдк рдмрд┐рдВрджреБ рд╣реИ - рд╣рдо рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдЬреЛ рдХреБрдЫ рднреА рдерд╛, рд╣рдо рд▓реМрдЯ рдЖрдПред рдпрд╣реА рд╣реИ, рднрд╛рд╖рд╛ рдореЗрдВ рд╕реВрдЪреА рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рдореАрдареЗ рддрддреНрд╡ рдХреА рдЕрдиреБрдкрд╕реНрдерд┐рддрд┐ рдиреЗ рдЕрдзрд┐рдХ рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ рдХреЛрдб рдХреЗ рд▓реЗрдЦрди рдХрд╛ рдиреЗрддреГрддреНрд╡ рдХрд┐рдпрд╛ред рдХреНрдпрд╛ рдпрд╣ "рдХрдо рдЬреНрдпрд╛рджрд╛ рд╣реИ," рдХрд╛рдорд░реЗрдб рдХрд╛ рдПрдХ рдмрдбрд╝рд╛ рдЙрджрд╛рд╣рд░рдг рд╣реИ?
рдЗрд╕рд▓рд┐рдП, рдореИрдВ рд▓реВрдк рдФрд░ рдкрд╛рдЗрдереЛрдирд┐рдХ рд╕реВрдЪреА рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП "рдирд┐рдкрдЯрд╛" рд░рд╣рд╛ рд╣реВрдВ, рдпрд╣ рдЖрдЧреЗ рдмрдврд╝рдиреЗ рдХрд╛ рд╕рдордп рд╣реИред рдХреНрдпрд╛ рдЖрдк рдХрд┐рд╕реА рд╡рд╕реНрддреБ рдХреЗ рдЧреБрдгреЛрдВ рдХреЛ рдбреЙрдЯ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдПрдХреНрд╕реЗрд╕ рдХрд░рдирд╛ рдкрд╕рдВрдж рдХрд░рддреЗ рд╣реИрдВ? рдореЗрд░реЗ рд▓рд┐рдП - рдмрд╣реБрдд, рдпрд╣ рд╕рдВрдХреНрд╖рд┐рдкреНрдд рд╣реИ (рдХреЗрд╡рд▓ рд╡рд╕реНрддреБ рдХреЛ рдЫреЛрдбрд╝рдХрд░ рдФрд░ рдЖрд╡рд╢реНрдпрдХ рд╕рдВрдкрддреНрддрд┐ рдХреЗрд╡рд▓ рдПрдХ рдЫреЛрдЯреА рд╕реА рдбреЙрдЯ рд╣реИ) рдФрд░ рдЕрднрд┐рд╡реНрдпрдВрдЬрдХ (рдпрд╣рд╛рдВ рддрдХ тАЛтАЛрдХрд┐ рд╡рд╕реНрддреБрдУрдВ рд╕реЗ рджреВрд░ рдПрдХ рд╡реНрдпрдХреНрддрд┐ рдЖрд╕рд╛рдиреА рд╕реЗ рд╕рдордЭ рдЬрд╛рдПрдЧрд╛ рдХрд┐ рдирдордХ рдХреНрдпрд╛ рд╣реИ)ред рдпрд╣ рдЗрддрдирд╛ рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рд╣реИ рдХрд┐ рд╣рдо рд╡рд┐рдХрд▓реНрдкреЛрдВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдирд╣реАрдВ рд╕реЛрдЪрддреЗ рд╣реИрдВ, рдФрд░ рдПрдХ рд╣реА рдЕрдЬрдЧрд░ рдореЗрдВ рдПрдХ рд╡рд╕реНрддреБ рдХреА рд╡рд┐рд╢реЗрд╖рддрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХреЗ рддреАрди рддрд░реАрдХреЗ рд╣реИрдВ (__getattr__, рдЖрджрд┐ рдХреЗ рд▓рд┐рдП рдкреНрд░рддреНрдпрдХреНрд╖ рдкрд╣реБрдВрдЪ) рдЬреЛ рдХреБрдЫ рднреА рдореМрд▓рд┐рдХ рд░реВрдк рд╕реЗ рдирдпрд╛ рдирд╣реАрдВ рджреЗрддрд╛ рд╣реИ:
obj . name
getattr (obj, "name" )
operator . attrgetter( "name" )(obj)
рд╣рдо рдЖрдЦрд┐рд░реА, рд╕рдмрд╕реЗ рдбрд░рд╛рд╡рдирд╛ рд╡рд┐рдХрд▓реНрдк рдореЗрдВ рд░реБрдЪрд┐ рд░рдЦрддреЗ рд╣реИрдВ, рдХреНрдпреЛрдВрдХрд┐ рдпрд╣ рдПрдХ рдлрд╝рдВрдХреНрд╢рди рдореЗрдВ рдПрдХ рд╡рд┐рд╢реЗрд╖рддрд╛ рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рдХреЗ рд╕рдВрдЪрд╛рд▓рди рдХреЛ рдЪрд╛рд▓реВ рдХрд░рддрд╛ рд╣реИред рд╡рд╣ рдЬреЛ рд╣рдо рд▓рдВрдмреЛрджрд░ рдХреА рдорджрдж рд╕реЗ рдЕрдиреБрдХрд░рдг рдХрд░рддреЗ рд╣реИрдВред рдпрджрд┐ рдпрд╣ рд╡рд┐рд╢реЗрд╖рддрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдПрдХрдорд╛рддреНрд░ рддрд░реАрдХрд╛ рдерд╛, рддреЛ рд╣рдо рддреБрд░рдВрдд рд╕рд╛рд░реНрд╡рднреМрдорд┐рдХ, рдПрдХреНрд╕реНрдЯреЗрдВрд╕рд┐рдмрд▓ рд▓рд┐рдЦреЗрдВрдЧреЗ рдФрд░ рдкреБрди: рдЙрдкрдпреЛрдЧ рдХреЛрдб рдХреЗ рд▓рд┐рдП рддреИрдпрд╛рд░ рд╣реЛрдВрдЧреЗ:
from operator import attrgetter
names = map (attrgetter( "name" ), fields)
рдРрд╕рд╛ рд▓рдЧ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рд╡рд╛рдХреНрдп рд░рдЪрдирд╛ рдХреЛ рдЫреЛрдбрд╝рдиреЗ рдХрд╛ рдкреНрд░рд╕реНрддрд╛рд╡ рдХрд░рддрд╛ рд╣реВрдВ - рдирд╣реАрдВ, рдпрд╣ рдЕрдзрд┐рдХрд╛рдВрд╢ рдЖрдзреБрдирд┐рдХ рднрд╛рд╖рд╛рдУрдВ рдХрд╛ рдПрдХ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣рд┐рд╕реНрд╕рд╛ рд╣реИ, рдЬреЛ рдХреЛрдб рдХреА рдкрдардиреАрдпрддрд╛ рдФрд░ рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╕реБрдирд┐рд╢реНрдЪрд┐рдд рдХрд░рддрд╛ рд╣реИред рдЕрдВрдд рдореЗрдВ, рдореБрдЭреЗ рднреА рдХреЛрдб рдХреЛ рдореАрдард╛ рдХрд░рдиреЗ рдореЗрдВ рдХреЛрдИ рдЖрдкрддреНрддрд┐ рдирд╣реАрдВ рд╣реИред рдореИрдВ рдЬреЛ рдХрд╣рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ, рд╡рд╣ рдпрд╣ рд╣реИ рдХрд┐ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЗ рдкреАрдЫреЗ рдпрд╣ рджреЗрдЦрдирд╛ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ рдХрд┐ рдЖрдк рдХреНрдпрд╛ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХреЛ рдзрдХреНрдХрд╛ рджреЗрдиреЗ рдореЗрдВ рд╕рдХреНрд╖рдо рд╣реИ рддрд╛рдХрд┐ рдХреЛрдб рдХрд╛рд░реНрдп рдХреЛ рд╡реНрдпрдХреНрдд рдХрд░реЗ рдФрд░ рдХрд╛рд░реНрдп рдХреЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╣рд┐рд╕реНрд╕реЗ рдЕрд▓рдЧ-рдЕрд▓рдЧ рд╕рд┐рдВрдЯреИрдХреНрд╕ рддрддреНрд╡реЛрдВ рдкрд░ рдЭреВрда рдмреЛрд▓рддреЗ рд╣реИрдВред
PS рдореИрдВ рдЬрд╛рд╡рд╛рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдореЗрдВ ORM рдирд╣реАрдВ рд▓рд┐рдЦрддрд╛ред
PPS рдореИрдВ ORM рдХреЛ рдпрд╛ рддреЛ python рдореЗрдВ рдирд╣реАрдВ рд▓рд┐рдЦрддрд╛, рд╣рд╛рд▓рд╛рдВрдХрд┐ рдХрдИ рдмрд╛рд░ рдореИрдВ ORM Django рдореЗрдВ рддрд▓реНрд▓реАрди рд╣реЛ рдЬрд╛рддрд╛ рд╣реВрдВред
рдкреАрдкреАрдкреАрдПрд╕ рдПрдХ рдкреНрд░реИрдХреНрдЯрд┐рдХрд▓ рдХреЙрдорди рд▓рд┐рд╕реНрдк рдкрдврд╝рддреЗ рд╣реБрдП рдпрд╣рд╛рдВ рдкреНрд░рд╕реНрддреБрдд
рдПрдХ рд╡рд┐рдЪрд┐рддреНрд░ рд╡рд┐рдЪрд╛рд░ рдореЗрд░реЗ рд╕рд╛рдордиреЗ рдЖрдпрд╛ред рдЬреЛ рд▓реЛрдЧ рдирд╣реАрдВ рдЬрд╛рдирддреЗ рд╣реИрдВ, рдЙрдирдХреЗ рд▓рд┐рдП рд▓рд┐рд╕реНрдк рдХрд╛рд░реНрдпрдХреНрд░рдо рдиреЗрд╕реНрдЯреЗрдб рд╕реВрдЪрд┐рдпреЛрдВ рдХрд╛ рдПрдХ рд╕рдореВрд╣ рд╣реИ, рдЬрд┐рдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдореЗрдВ рдПрдХ "рдХреНрдпрд╛ рдХрд░рдирд╛ рд╣реИ" (рдлрд╝рдВрдХреНрд╢рди рдирд╛рдо, рдСрдкрд░реЗрдЯрд░ рдпрд╛ рдореИрдХреНрд░реЛ) рдФрд░ рдмрд╛рдж рдХреЗ рддрд░реНрдХ рд╣реИрдВ, рдЕрд░реНрдерд╛рддреНред рд╕реНрд╡рдпрдВ рдХреЗ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рд╡реГрдХреНрд╖ рдХрд╛ рдкреНрд░рддрд┐рдирд┐рдзрд┐рддреНрд╡ рдХрд░рддрд╛ рд╣реИред рджреВрд╕рд░реЗ рд╢рдмреНрджреЛрдВ рдореЗрдВ, рд▓рд┐рд╕реНрдк рдореЗрдВ рдХреЛрдИ рд╕рд┐рдВрдЯреИрдХреНрд╕ рдирд╣реАрдВ рд╣реИред рдФрд░ рдЕрдЬреАрдм рддрд░рд╣ рд╕реЗ, рдпрд╣ рдЙрд╕ рдкрд░ рдХрд╛рд░реНрдпрдХреНрд░рдореЛрдВ рдХреЛ рдЖрд╢реНрдЪрд░реНрдпрдЬрдирдХ рд░реВрдк рд╕реЗ рд▓рдЪреАрд▓рд╛ рдмрдирд╛рддрд╛ рд╣реИред
рдЕрджреНрдпрддрдиред рдЕрдзрд┐рдХрд╛рдВрд╢ рдЖрдкрддреНрддрд┐рдпреЛрдВ рдХрд╛ рдЬрд╡рд╛рдм рджреЗрдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВ рдереЛрдбрд╝рд╛ рдЕрд▓рдЧ рдЖрддрд╛ рд╣реВрдВред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдирдХреНрд╢рд╛ (), рдЬреЛ рдореИрдВ рдЕрдВрддрддрдГ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рдПрдХ рдХрд╛рдлреА рдЙрдЪреНрдЪ-рд╕реНрддрд░реАрдп рдЕрдореВрд░реНрддрддрд╛ рднреА рд╣реИред рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдореЗрд░реЗ рджреНрд╡рд╛рд░рд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдЧрдП рд╕рд╛рд░ рдХреЛ рдПрдХ рдкрджрд╛рдиреБрдХреНрд░рдо рдореЗрдВ рд╡реНрдпрд╡рд╕реНрдерд┐рдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ:
рдЕрдиреБрдХреНрд░рдордгрд┐рдХрд╛ рдХреЗ рд▓рд┐рдП + рд╕рд╛рд░ = рдХреЗ рд▓рд┐рдП рд╕реА-рд╢реИрд▓реА
рдкреНрд░рддреНрдпреЗрдХ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ = рдирдХреНрд╢реЗ рдкрд░ рдореЗрдВ + рд╡рд╛рдкрд╕реА рдкрд░рд┐рдгрд╛рдо
map + рд▓рдВрдмрджрд╛ = рд╕реВрдЪреА рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ред
рдореИрдВ рдирд┐рдореНрди рд╕реНрддрд░ рдкрд░ рд╢реБрд░реВ рдХрд░рддрд╛ рд╣реВрдВ рдФрд░ рдЕрдореВрд░реНрддрддрд╛ рдХреЗ рд╕реНрддрд░ рддрдХ рдкрд╣реБрдВрдЪрддрд╛ рд╣реВрдВ рдЬреЛ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд╡реНрдпрдХреНрдд рдХрд░рддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдХреНрдпрд╛ рдХрд░рдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдХрд░ рд░рд╣рд╛ рд╣реВрдВред рдФрд░ рдЕрдЧрд░ рдореБрдЭреЗ рд╕рд╛рдорд╛рдиреНрдп рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рддреЛ рдореБрдЭреЗ рдпрд╣рд╛рдВ рд░реБрдХрдирд╛ рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдореБрдЭреЗ рд╕рд╛рдорд╛рдиреНрдпреАрдХрд░рдг рдХрд░рдирд╛ рд╣реИ, рддреЛ рдореБрдЭреЗ рдпрд╣ рдпрд╛рдж рд░рдЦрдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рд╕реВрдЪреА рдХреА рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рд╕рд┐рд░реНрдл рдПрдХ рдмреЛрддрд▓ рдореЗрдВ рдореИрдк рдФрд░ рд▓реИрдореНрдмреНрдбрд╛ рд╣реИ рдпрд╛ рдХреЛрдб рдХреЛ рдбреБрдкреНрд▓рд┐рдХреЗрдЯ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░реЗрдВред рдпрджрд┐ рднрд╛рд╖рд╛ рдореЗрдВ рдХреЛрдИ рд╕реВрдЪреА рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐рдпрд╛рдБ рдирд╣реАрдВ рд╣реИрдВ (рдЬреИрд╕реЗ рдХрд┐ js рдореЗрдВ), рддреЛ рдореБрдЭреЗ рддреБрд░рдВрдд рдПрдХ рд╕рд╛рдорд╛рдиреНрдпреАрдХреГрдд рдХреЛрдб рдкреНрд░рд╛рдкреНрдд рд╣реЛрдЧрд╛, рд▓реЗрдХрд┐рди рдпрд╣ рдирд┐рдореНрди рд╕реНрддрд░ рдХрд╛ рд╣реЛрдЧрд╛ред рдпрджрд┐ рдореИрдВ рдпрд╣ рднреВрд▓ рдЬрд╛рддрд╛ рд╣реВрдВ рдХрд┐ рд╕реВрдЪреА рдХреА рдЕрднрд┐рд╡реНрдпрдХреНрддрд┐ рдХреЛ рддреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рддреЛ рдореИрдВ рдХреЛрдб рдХреА рдирдХрд▓ рдХрд░рдирд╛ рд╢реБрд░реВ рдХрд░ рджреВрдВрдЧрд╛ред
рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ:
1. рднрд╛рд╖рд╛ рдореЗрдВ рдПрдХ рд╡рд┐рд╢рд┐рд╖реНрдЯ рд╡рд╛рдХреНрдпрд╡рд┐рдиреНрдпрд╛рд╕ рдХреА рдХрдореА рдХреЗ рдХрд╛рд░рдг рдЕрдзрд┐рдХ рд▓рдЪреАрд▓реЗ рдХреЛрдб рд▓рд┐рдЦрдирд╛ рдкрдбрд╝рддрд╛ рд╣реИред
2. рдпрд╣ рдЕрдзрд┐рдХ рд▓рдЪреАрд▓рд╛ рдХреЛрдб рдирд┐рдЪрд▓реЗ рд╕реНрддрд░ рдХрд╛ рд╣реЛрдЧрд╛ред
рдкрд╣рд▓реЗ рдХреЗ рд▓рд┐рдП рджреВрд╕рд░рд╛ рд╢реБрд▓реНрдХ,
from operator import attrgetter
names = map (attrgetter( "name" ), fields)
- рд╕рдордп рд╕реЗ рдкрд╣рд▓реЗ рд╕рд╛рдорд╛рдиреНрдпреАрдХрд░рдг, рдЕрдЧрд░ рд╣рдорд╛рд░реЗ рдкрд╛рд╕ рдПрдХ рдмрд┐рдВрджреБ рд╣реИред