рдПрдХ рднреА рдУрдЖрд░рдПрдо рдирд╣реАрдВ
рд╕рднреА рдХреЛ рдирдорд╕реНрдХрд╛рд░! рдореИрдВ Ostrovok.ru рд╣реЛрдЯрд▓ рдЖрд░рдХреНрд╖рдг рд╕реЗрд╡рд╛ рдХреЗ рднрд╛рдЧреАрджрд╛рд░ рд╡рд┐рдХрд╛рд╕ рд╡рд┐рднрд╛рдЧ рдХрд╛ рдкреНрд░рднрд╛рд░реА рд╣реВрдВред рдЗрд╕ рд▓реЗрдЦ рдореЗрдВ рдореИрдВ рдЗрд╕ рдмрд╛рд░реЗ рдореЗрдВ рдмрд╛рдд рдХрд░рдирд╛ рдЪрд╛рд╣реВрдВрдЧрд╛ рдХрд┐ рдХреИрд╕реЗ рд╣рдордиреЗ рдПрдХ рдкрд░рд┐рдпреЛрдЬрдирд╛ рдкрд░ Django ORM рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ред
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдореИрдВ рдзреЛрдЦрд╛ рджреЗ рд░рд╣рд╛ рдерд╛, рдирд╛рдо рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдП рдерд╛ " рдирд╣реАрдВ ORM рдПрдХрд▓ "ред рдпрджрд┐ рдЖрдк рд╕реЛрдЪ рд░рд╣реЗ рд╣реИрдВ рдХрд┐ рдореИрдВрдиреЗ рдпрд╣ рдХреНрдпреЛрдВ рд▓рд┐рдЦрд╛ рд╣реИ, рд╕рд╛рде рд╣реА рд╕рд╛рде:
- рдЖрдкрдХреЗ рдкрд╛рд╕ рд╕реНрдЯреИрдХ рдкрд░ Django рд╣реИ, рдФрд░ рдЖрдк ORM рд╕реЗ рдЕрдзрд┐рдХрддрдо
Model.objects.all()
, рди рдХрд┐ рдХреЗрд╡рд▓ Model.objects.all()
, - рдЖрдк рдбреЗрдЯрд╛рдмреЗрд╕ рд╕реНрддрд░ рдкрд░ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рддрд░реНрдХ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ,
- рдпрд╛ рдХреНрдпрд╛ рдЖрдк рдпрд╣ рдЬрд╛рдирдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рдХрд┐ B2B.Ostrovok.ru рдкрд░ рдбреЗрд╡рд▓рдкрд░реНрд╕ рдХреЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рд▓рдЧрд╛рддрд╛рд░ рдмрд╣рд╛рдирд╛ "рдЗрддрдирд╛ рдРрддрд┐рд╣рд╛рд╕рд┐рдХ" рдХреНрдпреЛрдВ рд╣реИ ,
... рдмрд┐рд▓реНрд▓реА рдХрд╛ рд╕реНрд╡рд╛рдЧрдд рд╣реИред

2014 рдореЗрдВ, рд╣рдордиреЗ B2B.Ostrovok.ru рд╢реБрд░реВ рдХрд┐рдпрд╛ - рдкрд░реНрдпрдЯрди рдмрд╛рдЬрд╛рд░ рдореЗрдВ рдкреЗрд╢реЗрд╡рд░реЛрдВ (рдЯреНрд░реИрд╡рд▓ рдПрдЬреЗрдВрдЯреЛрдВ, рдСрдкрд░реЗрдЯрд░реЛрдВ рдФрд░ рдХреЙрд░реНрдкреЛрд░реЗрдЯ рдЧреНрд░рд╛рд╣рдХреЛрдВ) рдХреЗ рд▓рд┐рдП рд╣реЛрдЯрд▓, рд╕реНрдерд╛рдирд╛рдиреНрддрд░рдг, рдХрд╛рд░реЛрдВ рдФрд░ рдЕрдиреНрдп рдпрд╛рддреНрд░рд╛ рд╕реЗрд╡рд╛рдУрдВ рдХреЗ рд▓рд┐рдП рдПрдХ рдСрдирд▓рд╛рдЗрди рдмреБрдХрд┐рдВрдЧ рд╕реЗрд╡рд╛ред
B2B рдореЗрдВ, рд╣рдордиреЗ GenericForeignKey
- рдореЗрдЯрд╛ рдСрд░реНрдбрд░ - MetaOrder
рдЖрдзрд╛рд░ рдкрд░ рдПрдХ рдЕрдореВрд░реНрдд рдСрд░реНрдбрд░ рдореЙрдбрд▓ рдХрд╛ рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдФрд░ рдХрд╛рдлреА рд╕рдлрд▓рддрд╛рдкреВрд░реНрд╡рдХ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рд╣реИред
рдПрдХ рдореЗрдЯрд╛ рдСрд░реНрдбрд░ рдПрдХ рдЕрдореВрд░реНрдд рдЗрдХрд╛рдИ рд╣реИ рдЬрд┐рд╕рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рд╕реА рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рдЖрджреЗрд╢ рд╕реЗ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ: рд╣реЛрдЯрд▓ ( Hotel
), рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реЗрд╡рд╛ ( Upsell
) рдпрд╛ рдХрд╛рд░ ( Car
)ред рднрд╡рд┐рд╖реНрдп рдореЗрдВ, рдЕрдиреНрдп рдкреНрд░рдХрд╛рд░ рджрд┐рдЦрд╛рдИ рджреЗ рд╕рдХрддреЗ рд╣реИрдВред
рд╣рдореЗрд╢рд╛ рд╕реЗ рдРрд╕рд╛ рдирд╣реАрдВ рд░рд╣рд╛ рд╣реИред рдЬрдм рдмреА 2 рдмреА рд╕реЗрд╡рд╛ рд╢реБрд░реВ рдХреА рдЧрдИ рдереА, рддреЛ рдЗрд╕рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдХреЗрд╡рд▓ рд╣реЛрдЯрд▓ рдмреБрдХ рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рдереЗ, рдФрд░ рд╕рднреА рд╡реНрдпрд╛рдкрд╛рд░рд┐рдХ рддрд░реНрдХ рдЙрди рдкрд░ рдХреЗрдВрджреНрд░рд┐рдд рдереЗред рдХрдИ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХрд╛ рдирд┐рд░реНрдорд╛рдг рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдмрд┐рдХреНрд░реА рд░рд╛рд╢рд┐ рдФрд░ рдЖрд░рдХреНрд╖рдг рд╡рд╛рдкрд╕реА рд░рд╛рд╢рд┐ рдХреА рд╡рд┐рдирд┐рдордп рджрд░реЛрдВ рдХреЛ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдПред рд╕рдордп рдХреЗ рд╕рд╛рде, рд╣рдордиреЗ рдорд╣рд╕реВрд╕ рдХрд┐рдпрд╛ рдХрд┐ рдореЗрдЯрд╛-рдСрд░реНрдбрд░ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП рдЗрд╕ рдбреЗрдЯрд╛ рдХреЛ рдХреИрд╕реЗ рд╕реНрдЯреЛрд░ рдФрд░ рдлрд┐рд░ рд╕реЗ рдЙрдкрдпреЛрдЧ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди рдкреВрд░реЗ рдХреЛрдб рдХреЛ рджреЛрдмрд╛рд░рд╛ рдирд╣реАрдВ рд▓рд┐рдЦрд╛ рдЬрд╛ рд╕рдХрд╛ рдФрд░ рдЗрд╕ рдзрд░реЛрд╣рд░ рдХрд╛ рд╣рд┐рд╕реНрд╕рд╛ рдирдИ рд╡рд╛рд╕реНрддреБрдХрд▓рд╛ рдореЗрдВ рдЖ рдЧрдпрд╛ред рджрд░рдЕрд╕рд▓, рдЗрд╕рд╕реЗ рдЧрдгрдирд╛ рдореЗрдВ рдХрдард┐рдирд╛рдЗрдпреЛрдВ рдХрд╛ рд╕рд╛рдордирд╛ рдХрд░рдирд╛ рдкрдбрд╝рд╛, рдЬреЛ рдХрдИ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЖрджреЗрд╢реЛрдВ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВред рдХреНрдпрд╛ рдХрд░реЗрдВ - рддреЛ рдРрддрд┐рд╣рд╛рд╕рд┐рдХ рд░реВрдк рд╕реЗ ...
рдореЗрд░рд╛ рд▓рдХреНрд╖реНрдп рд╣рдорд╛рд░реЗ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ Django ORM рдХреА рд╢рдХреНрддрд┐ рджрд┐рдЦрд╛рдирд╛ рд╣реИред
рдкреНрд░рд╛рдЧрд┐рддрд┐рд╣рд╛рд╕
рдЕрдкрдиреЗ рдЦрд░реНрдЪреЛрдВ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП, рд╣рдорд╛рд░реЗ рдмреА 2 рдмреА рдЧреНрд░рд╛рд╣рдХреЛрдВ рдХреЛ рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдЗрд╕ рдмрд╛рдд рдХреА рдЬрд╛рдирдХрд╛рд░реА рдирд╣реАрдВ рдереА рдХрд┐ рдЙрдиреНрд╣реЗрдВ рдЕрдм / рдХрд▓ / рдмрд╛рдж рдореЗрдВ рдХрд┐рддрдирд╛ рднреБрдЧрддрд╛рди рдХрд░рдирд╛ рд╣реЛрдЧрд╛, рдХреНрдпрд╛ рдЙрдирдХреЗ рдкрд╛рд╕ рдСрд░реНрдбрд░ рдкрд░ рдХрд░реНрдЬ рд╣реИ рдФрд░ рдЗрд╕рдХрд╛ рдЖрдХрд╛рд░ рдХреНрдпрд╛ рд╣реИ, рд╕рд╛рде рд╣реА рд╕рд╛рде рд╡реЗ рдЕрдкрдиреА рд╕реАрдорд╛ рдХреЗ рднреАрддрд░ рдХрд┐рддрдирд╛ рдЦрд░реНрдЪ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рд╣рдордиреЗ рдбреИрд╢рдмреЛрд░реНрдб рдХреЗ рд░реВрдк рдореЗрдВ рдЗрд╕ рдЬрд╛рдирдХрд╛рд░реА рдХреЛ рджрд┐рдЦрд╛рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ - рдПрдХ рд╕реНрдкрд╖реНрдЯ рдЖрд░реЗрдЦ рдХреЗ рд╕рд╛рде рдЗрд╕ рддрд░рд╣ рдХреЗ рдПрдХ рд╕рд╛рдзрд╛рд░рдг рд╕реЙрдХреЗрдЯред

(рд╕рднреА рдорд╛рди рдкрд░реАрдХреНрд╖рдг рд╣реИрдВ рдФрд░ рдХрд┐рд╕реА рд╡рд┐рд╢рд┐рд╖реНрдЯ рднрд╛рдЧреАрджрд╛рд░ рдкрд░ рд▓рд╛рдЧреВ рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВ)
рдкрд╣рд▓реА рдирдЬрд╝рд░ рдореЗрдВ, рд╕рдм рдХреБрдЫ рдХрд╛рдлреА рд╕рд░рд▓ рд╣реИ - рд╣рдо рд╕рд╛рдереА рдХреЗ рд╕рднреА рдЖрджреЗрд╢реЛрдВ рдХреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рддреЗ рд╣реИрдВ, рд╕рдВрдХреНрд╖рд┐рдкреНрдд рдХрд░рддреЗ рд╣реИрдВ рдФрд░ рджрд┐рдЦрд╛рддреЗ рд╣реИрдВред
рд╕рдорд╛рдзрд╛рди рдХреЗ рд╡рд┐рдХрд▓реНрдк
рд╣рдо рдЧрдгрдирд╛ рдХреИрд╕реЗ рдХрд░рддреЗ рд╣реИрдВ, рдЗрд╕ рдкрд░ рдереЛрдбрд╝рд╛ рд╕реНрдкрд╖реНрдЯреАрдХрд░рдгред рд╣рдо рдПрдХ рдЕрдВрддрд░рд░рд╛рд╖реНрдЯреНрд░реАрдп рдХрдВрдкрдиреА рд╣реИрдВ, рд╡рд┐рднрд┐рдиреНрди рджреЗрд╢реЛрдВ рдХреЗ рд╣рдорд╛рд░реЗ рд╕рд╛рдЭреЗрджрд╛рд░ рдЕрд▓рдЧ-рдЕрд▓рдЧ рдореБрджреНрд░рд╛рдУрдВ рдореЗрдВ рдкрд░рд┐рдЪрд╛рд▓рди - рдЦрд░реАрдж рдФрд░ рдлрд┐рд░ рд╕реЗ рдмреЗрдЪрдирд╛ рдЖрд░рдХреНрд╖рдг рдХрд╛ рд╕рдВрдЪрд╛рд▓рди рдХрд░рддреЗ рд╣реИрдВред рдЗрд╕рдХреЗ рдЕрд▓рд╛рд╡рд╛, рдЙрдиреНрд╣реЗрдВ рдЕрдкрдиреА рдЪреБрдиреА рд╣реБрдИ рдореБрджреНрд░рд╛ (рдЖрдорддреМрд░ рдкрд░ рд╕реНрдерд╛рдиреАрдп) рдореЗрдВ рд╡рд┐рддреНрддреАрдп рд╡рд┐рд╡рд░рдг рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рд╣реЛрдВрдЧреЗред рдпрд╣ рд╕рднреА рдореБрджреНрд░рд╛рдУрдВ рдХреА рджрд░реЛрдВ рдкрд░ рд╕рднреА рд╕рдВрднрд╛рд╡рд┐рдд рдбреЗрдЯрд╛ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдореВрд░реНрдЦрддрд╛рдкреВрд░реНрдг рдФрд░ рдЕрд╡реНрдпрд╡рд╣рд╛рд░рд┐рдХ рд╣реЛрдЧрд╛, рдЗрд╕рд▓рд┐рдП рдЖрдкрдХреЛ рдПрдХ рд╕рдВрджрд░реНрдн рдореБрджреНрд░рд╛ рдЪреБрдирдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд░реВрдмрд▓ред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рдЖрдк рд╕рднреА рдореБрджреНрд░рд╛рдУрдВ рдХреА рджрд░реЛрдВ рдХреЛ рдХреЗрд╡рд▓ рд░реВрдмрд▓ рдореЗрдВ рд╕реНрдЯреЛрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред рддрджрдиреБрд╕рд╛рд░, рдЬрдм рдПрдХ рд╕рд╛рдереА рдПрдХ рд╕рд╛рд░рд╛рдВрд╢ рдкреНрд░рд╛рдкреНрдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реИ, рддреЛ рд╣рдо рдмрд┐рдХреНрд░реА рдХреЗ рд╕рдордп рдирд┐рд░реНрдзрд╛рд░рд┐рдд рджрд░ рдкрд░ рдорд╛рддреНрд░рд╛рдУрдВ рдХреЛ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рдХрд░рддреЗ рд╣реИрдВред
"рдорд╛рдереЗ рдореЗрдВ"
рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ, рдпрд╣ Model.objects.all()
рдФрд░ рд╕реНрдерд┐рддрд┐рдпрд╛рдВ рд▓реВрдк рд╣реИрдВ:
рд╢рд░реНрддреЛрдВ рдХреЗ рд╕рд╛рде Model.objects.all () def output(partner_id): today = dt.date.today()
рдпрд╣ рдХреНрд╡реЗрд░реА рдПрдХ рдЬрдирд░реЗрдЯрд░ рд▓реМрдЯрд╛рдПрдЧрд╛ рдЬрд┐рд╕рдореЗрдВ рд╕рдВрднрд╛рд╡рд┐рдд рд░реВрдк рд╕реЗ рдХрдИ рд╕реМ рдмреБрдХрд┐рдВрдЧ рд╢рд╛рдорд┐рд▓ рд╣реИрдВред рдЗрдирдореЗрдВ рд╕реЗ рдкреНрд░рддреНрдпреЗрдХ рдмреБрдХрд┐рдВрдЧ рдХреЗ рд▓рд┐рдП рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрдиреБрд░реЛрдз рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛, рдФрд░ рдЗрд╕рд▓рд┐рдП рдпрд╣ рдЪрдХреНрд░ рдмрд╣реБрдд рд▓рдВрдмреЗ рд╕рдордп рддрдХ рдХрд╛рдо рдХрд░реЗрдЧрд╛ред
рдЖрдк prefetch_related
рд╡рд┐рдзрд┐ рдХреЛ рдЬреЛрдбрд╝рдХрд░ рдЪреАрдЬрд╝реЛрдВ рдХреЛ рдереЛрдбрд╝рд╛ рддреЗрдЬрд╝ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ:
рддрдм рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд▓рд┐рдП рдереЛрдбрд╝реЗ рдХрдо рдЕрдиреБрд░реЛрдз рд╣реЛрдВрдЧреЗ ( GenericForeignKey
рдкрд░ GenericForeignKey
), рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА, рдЕрдВрдд рдореЗрдВ, рд╣рдо рдЙрдирдХреА рд╕рдВрдЦреНрдпрд╛ рдкрд░ рд░реЛрдХ рджреЗрдВрдЧреЗ, рдХреНрдпреЛрдВрдХрд┐ рдЪрдХреНрд░ рдХреЗ рдкреНрд░рддреНрдпреЗрдХ рдкреБрдирд░рд╛рд╡реГрддреНрддрд┐ рдкрд░ рдбреЗрдЯрд╛рдмреЗрд╕ рдХреЗ рд▓рд┐рдП рдЕрдиреБрд░реЛрдз рдЕрднреА рднреА рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
output
рд╡рд┐рдзрд┐ (рдФрд░ рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП) рдХреЛ рдХреИрд╢ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдлрд┐рд░ рднреА рдкрд╣рд▓реА рдХреЙрд▓ рдПрдХ рдорд┐рдирдЯ рдХреЗ рдЖрджреЗрд╢ рдХреЛ рдкреВрд░рд╛ рдХрд░рддреА рд╣реИ, рдЬреЛ рдкреВрд░реА рддрд░рд╣ рд╕реЗ рдЕрд╕реНрд╡реАрдХрд╛рд░реНрдп рд╣реИред
рдЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЗ рдкрд░рд┐рдгрд╛рдо рдЗрд╕ рдкреНрд░рдХрд╛рд░ рд╣реИрдВ:

рдФрд╕рдд рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рд╕рдордп 4 рд╕реЗрдХрдВрдб рд╣реИ, рдФрд░ 21 рд╕реЗрдХрдВрдб рддрдХ рдкрд╣реБрдВрдЪрдиреЗ рд╡рд╛рд▓реА рдЪреЛрдЯрд┐рдпрд╛рдВ рд╣реИрдВред рдмрд╣реБрдд рд▓рдВрдмрд╛ рд╕рдордп рд╣реИред
рд╣рдордиреЗ рд╕рднреА рднрд╛рдЧреАрджрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдбреИрд╢рдмреЛрд░реНрдб рдХреЛ рд░реЛрд▓ рдЖрдЙрдЯ рдирд╣реАрдВ рдХрд┐рдпрд╛ рд╣реИ, рдФрд░ рдЗрд╕рд▓рд┐рдП рд╣рдордиреЗ рдЗрд╕рдХреЗ рд▓рд┐рдП рдХрдИ рдЕрдиреБрд░реЛрдз рдирд╣реАрдВ рдХрд┐рдП рд╣реИрдВ, рд▓реЗрдХрд┐рди рдпрд╣ рд╕рдордЭрдирд╛ рдЕрднреА рднреА рдкрд░реНрдпрд╛рдкреНрдд рд╣реИ рдХрд┐ рдпрд╣ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдкреНрд░рднрд╛рд╡реА рдирд╣реАрдВ рд╣реИред

рдиреАрдЪреЗ рджрд╛рдИрдВ рдУрд░ рдХреА рд╕рдВрдЦреНрдпрд╛рдПрдБ рдкреНрд░рд╢реНрдиреЛрдВ рдХреА рд╕рдВрдЦреНрдпрд╛ рд╣реИрдВ: рдиреНрдпреВрдирддрдо, рдЕрдзрд┐рдХрддрдо, рдФрд╕рдд, рдХреБрд▓ред
рдорди рдХреЗ рд╕рд╛рде
рдорд╛рдереЗ рдХрд╛ рдкреНрд░реЛрдЯреЛрдЯрд╛рдЗрдк рдХрд╛рд░реНрдп рдХреА рдЬрдЯрд┐рд▓рддрд╛ рдХреЛ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдЕрдЪреНрдЫрд╛ рдерд╛, рд▓реЗрдХрд┐рди рдЙрдкрдпреЛрдЧ рдХреЗ рд▓рд┐рдП рдЗрд╖реНрдЯрддрдо рдирд╣реАрдВ рдерд╛ред рд╣рдордиреЗ рддрдп рдХрд┐рдпрд╛ рдХрд┐ рдбреЗрдЯрд╛рдмреЗрд╕ рдореЗрдВ рдХрдИ рд╕рд░рд▓ рдкреНрд░рд╢реНрдиреЛрдВ рдХреА рддреБрд▓рдирд╛ рдореЗрдВ рдХрдИ рдЬрдЯрд┐рд▓ рдкреНрд░рд╢реНрдиреЛрдВ рдХреЛ рдХрд░рдирд╛ рдЕрдзрд┐рдХ рддреЗрдЬрд╝ рдФрд░ рдХрдо рд╕рдВрд╕рд╛рдзрди-рдЧрд╣рди рд╣реЛрдЧрд╛ред
рдЕрдиреБрд░реЛрдз рдпреЛрдЬрдирд╛
рдХреНрд╡реЗрд░реА рдкреНрд▓рд╛рди рдХреЗ рд╡рд┐рд╕реНрддреГрдд рд╕реНрдЯреНрд░реЛрдХ рдЗрд╕ рддрд░рд╣ рд╡рд░реНрдгрд┐рдд рдХрд┐рдП рдЬрд╛ рд╕рдХрддреЗ рд╣реИрдВ:
- рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╢рд░реНрддреЛрдВ рдХреЗ рдЕрдиреБрд╕рд╛рд░ рдЖрджреЗрд╢ рдПрдХрддреНрд░ рдХрд░реЗрдВ,
annotate
рдорд╛рдзреНрдпрдо рд╕реЗ рдЧрдгрдирд╛ рдХреЗ рд▓рд┐рдП рдлрд╝реАрд▓реНрдб рддреИрдпрд╛рд░ рдХрд░реЗрдВ,- рдлрд╝реАрд▓реНрдб рдорд╛рдиреЛрдВ рдХреА рдЧрдгрдирд╛ рдХрд░реЗрдВ
- рд░рд╛рд╢рд┐ рдФрд░ рдорд╛рддреНрд░рд╛ рдХреЗ
aggregate
рд╕реЗ aggregate
рдмрдирд╛рдПрдВ
рдкреНрд░рд╛рд░рдВрднрд┐рдХ рд╢рд░реНрддреЗрдВ
рд╕рд╛рдЗрдЯ рдкрд░ рдЬрд╛рдиреЗ рд╡рд╛рд▓реЗ рд╕рд╛рдереА рдЕрдкрдиреЗ рдЕрдиреБрдмрдВрдз рдкрд░ рдХреЗрд╡рд▓ рдЬрд╛рдирдХрд╛рд░реА рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВред
partner = query_get_one(Partner.objects.filter(id=partner_id))
рдпрджрд┐ рд╣рдо рдирдП рдкреНрд░рдХрд╛рд░ рдХреЗ рдСрд░реНрдбрд░ / рдмреБрдХрд┐рдВрдЧ рджрд┐рдЦрд╛рдирд╛ рдирд╣реАрдВ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рддреЛ рд╣рдореЗрдВ рдХреЗрд╡рд▓ рд╕рдорд░реНрдерд┐рдд рд▓реЛрдЧреЛрдВ рдХреЛ рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛:
query = MetaOrder.objects.filter( partner=partner, content_type__in=[ Hotel.get_content_type(), Car.get_content_type(), Upsell.get_content_type(), ] )
рдЖрджреЗрд╢ рдХреА рд╕реНрдерд┐рддрд┐ рдорд╣рддреНрд╡рдкреВрд░реНрдг рд╣реИ ( Q
рдмрд╛рд░реЗ рдореЗрдВ рдЕрдзрд┐рдХ):
query = query.filter( Q(hotel__status__in=['completed', 'cancelled'])
рд╣рдо рдЕрдХреНрд╕рд░ рдкрд╣рд▓реЗ рд╕реЗ рддреИрдпрд╛рд░ рдЕрдиреБрд░реЛрдзреЛрдВ рдХрд╛ рднреА рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реИрдВ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдЙрди рд╕рднреА рдЖрджреЗрд╢реЛрдВ рдХреЛ рдмрд╛рд╣рд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдЬрд┐рдиреНрд╣реЗрдВ рднреБрдЧрддрд╛рди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рдмрд╣реБрдд рд╕рд╛рд░реЗ рд╡реНрдпрд╛рд╡рд╕рд╛рдпрд┐рдХ рддрд░реНрдХ рд╣реИрдВ, рдЬреЛ рдЗрд╕ рд▓реЗрдЦ рдХреЗ рдврд╛рдВрдЪреЗ рдореЗрдВ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдмрд╣реБрдд рджрд┐рд▓рдЪрд╕реНрдк рдирд╣реАрдВ рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╕рдВрдХреНрд╖реЗрдк рдореЗрдВ рдпреЗ рд╕рд┐рд░реНрдл рдЕрддрд┐рд░рд┐рдХреНрдд рдлрд┐рд▓реНрдЯрд░ рд╣реИрдВред рдПрдХ рд╡рд┐рдзрд┐ рдЬреЛ рдПрдХ рддреИрдпрд╛рд░ рдХреНрд╡реЗрд░реА рд▓реМрдЯрд╛рддреА рд╣реИ, рд╡рд╣ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦ рд╕рдХрддреА рд╣реИ:
query = MetaOrder.exclude_non_payable_metaorders(query)
рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ, рдпрд╣ рдПрдХ рдХреНрд▓рд╛рд╕ рд╡рд┐рдзрд┐ рд╣реИ рдЬреЛ рдПрдХ QuerySet
рднреА QuerySet
ред
рд╣рдо рд╕рд╢рд░реНрдд рдирд┐рд░реНрдорд╛рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдФрд░ рдЧрдгрдирд╛ рдкрд░рд┐рдгрд╛рдореЛрдВ рдХреЛ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреБрдЫ рдЪрд░ рднреА рддреИрдпрд╛рд░ рдХрд░реЗрдВрдЧреЗ:
import datetime as dt from typing.decimal import Decimal today = dt.date.today() result = defaultdict(Decimal)
рдлреАрд▓реНрдб рддреИрдпрд╛рд░реА ( annotate
)
рдЗрд╕ рддрдереНрдп рдХреЗ рдХрд╛рд░рдг рдХрд┐ рд╣рдореЗрдВ рдСрд░реНрдбрд░ рдХреЗ рдкреНрд░рдХрд╛рд░ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЦреЗрддреЛрдВ рдХрд╛ рдЙрд▓реНрд▓реЗрдЦ рдХрд░рдирд╛ рд╣реИ, рд╣рдо Coalesce
рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВрдЧреЗред рдЗрд╕ рдкреНрд░рдХрд╛рд░, рд╣рдо рдХрд┐рд╕реА рднреА рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдХрд┐рд╕реА рднреА рдкреНрд░рдХрд╛рд░ рдХреЗ рдирдП рдЖрджреЗрд╢реЛрдВ рдХреЛ рд╕рд╛рд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдпрд╣рд╛рдБ annotate
рдмреНрд▓реЙрдХ рдХрд╛ рдкрд╣рд▓рд╛ рднрд╛рдЧ рд╣реИ:
рдкрд╣рд▓реЗ рдПрдиреЛрдЯреЗрдЯ Coalesce
рдпрд╣рд╛рдВ рдзрдорд╛рдХреЗ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдХреНрдпреЛрдВрдХрд┐ рд╣реЛрдЯрд▓ рдХреЗ рдСрд░реНрдбрд░ рдореЗрдВ рдХрдИ рд╡рд┐рд╢реЗрд╖ рдЧреБрдг рд╣реИрдВ, рдФрд░ рдЕрдиреНрдп рд╕рднреА рдорд╛рдорд▓реЛрдВ рдореЗрдВ (рдЕрддрд┐рд░рд┐рдХреНрдд рд╕реЗрд╡рд╛рдУрдВ рдФрд░ рдХрд╛рд░реЛрдВ) рдпреЗ рдЧреБрдг рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдорд╣рддреНрд╡рдкреВрд░реНрдг рдирд╣реАрдВ рд╣реИрдВред рдпрд╣ рд╣реИ рдХрд┐ рд░рд╛рд╢рд┐рдпреЛрдВ рдХреЗ рд▓рд┐рдП Value(ZERO)
рдФрд░ рд╡рд┐рдирд┐рдордп рджрд░реЛрдВ рдХреЗ рд▓рд┐рдП Value(ONE)
рдкреНрд░рдХрдЯ рд╣реЛрддреЗ рд╣реИрдВред ZERO
рдФрд░ ONE
рдХреЗрд╡рд▓ Decimal('0')
рдФрд░ Decimal(1)
, рдХреЗрд╡рд▓ рд╕реНрдерд┐рд░рд╛рдВрдХ рдХреЗ рд░реВрдк рдореЗрдВред рдПрдХ рд╢реМрдХрд┐рдпрд╛ рджреГрд╖реНрдЯрд┐рдХреЛрдг, рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реА рдкрд░рд┐рдпреЛрдЬрдирд╛ рдореЗрдВ рдЗрд╕реЗ рдЗрд╕ рддрд░рд╣ рд╕реЗ рд╕реНрд╡реАрдХрд╛рд░ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред
рдЖрдкрдХреЗ рдорди рдореЗрдВ рд╕рд╡рд╛рд▓ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ рдореЗрдЯрд╛ рдСрд░реНрдбрд░ рдореЗрдВ рдХреБрдЫ рдлрд╝реАрд▓реНрдбреНрд╕ рдХреЛ рдПрдХ рд╕реНрддрд░ рддрдХ рдХреНрдпреЛрдВ рдирд╣реАрдВ рд░рдЦрд╛ рдЬрд╛рдП? рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, payment_pending
, рдЬреЛ рд╣рд░ рдЬрдЧрд╣ рд╣реИред рджрд░рдЕрд╕рд▓, рд╕рдордп рдХреЗ рд╕рд╛рде, рд╣рдо рдРрд╕реЗ рдХреНрд╖реЗрддреНрд░реЛрдВ рдХреЛ рдореЗрдЯрд╛-рдСрд░реНрдбрд░ рдореЗрдВ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЕрдм рдХреЛрдб рдЕрдЪреНрдЫреА рддрд░рд╣ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдРрд╕реЗ рдХрд╛рд░реНрдп рд╣рдорд╛рд░реА рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рдирд╣реАрдВ рд╣реИрдВред
рдПрдХ рдФрд░ рддреИрдпрд╛рд░реА рдФрд░ рдЧрдгрдирд╛
рдЕрдм рд╣рдореЗрдВ рдЙрди рд░рд╛рд╢рд┐рдпреЛрдВ рдХреЗ рд╕рд╛рде рдХреБрдЫ рдЧрдгрдирд╛рдПрдБ рдХрд░рдиреЗ рдХреА рдЬрд╝рд░реВрд░рдд рд╣реИ рдЬреЛ рд╣рдореЗрдВ рдкрд┐рдЫрд▓реЗ annotate
рдмреНрд▓реЙрдХ рдореЗрдВ рдорд┐рд▓реА рдереАрдВред рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ рдЕрдм рдЖрдкрдХреЛ рдЖрджреЗрд╢ рдХреЗ рдкреНрд░рдХрд╛рд░ (рдПрдХ рдЕрдкрд╡рд╛рдж рдХреЛ рдЫреЛрдбрд╝рдХрд░) рд╕реЗ рдмрдВрдзреЗ рд░рд╣рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред
рджреВрд╕рд░рд╛ рдПрдиреЛрдЯреЗрдЯ рдЗрд╕ рдмреНрд▓реЙрдХ рдХрд╛ рд╕рдмрд╕реЗ рджрд┐рд▓рдЪрд╕реНрдк рд╣рд┐рд╕реНрд╕рд╛ _reporting_currency_rate
рдлрд╝реАрд▓реНрдб рдпрд╛ рдмрд┐рдХреНрд░реА рдХреЗ рд╕рдордп рд╕рдВрджрд░реНрдн рдореБрджреНрд░рд╛ рдХреЗ рд▓рд┐рдП рд╡рд┐рдирд┐рдордп рджрд░ рд╣реИред рдПрдХ рд╣реЛрдЯрд▓ рдХреЗ рдСрд░реНрдбрд░ рдХреЗ рд▓рд┐рдП рд╕рднреА рдореБрджреНрд░рд╛рдУрдВ рдХреА рд╡рд┐рдирд┐рдордп рджрд░реЛрдВ рдкрд░ рдбреЗрдЯрд╛ рдореБрджреНрд░рд╛ рдореБрджреНрд░рд╛ рдореЗрдВ рд╕рдВрдЧреНрд░рд╣реАрдд рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред рдпрд╣ рд╕рд┐рд░реНрдл JSON рд╣реИред рд╣рдо рдРрд╕рд╛ рдХреНрдпреЛрдВ рд░рдЦрддреЗ рд╣реИрдВ? рдпрд╣ рдРрддрд┐рд╣рд╛рд╕рд┐рдХ рд░реВрдк рд╕реЗ рдорд╛рдорд▓рд╛ рд╣реИ ред
рдФрд░ рдпрд╣рд╛рдБ, рдпрд╣ рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ, рдХреНрдпреЛрдВ рдирд╣реАрдВ F
рдЙрдкрдпреЛрдЧ рдХрд░реЗрдВ рдФрд░ рдЕрдиреБрдмрдВрдз рдореБрджреНрд░рд╛ рдХреЗ рдореВрд▓реНрдп рдХреЛ рдкреНрд░рддрд┐рд╕реНрдерд╛рдкрд┐рдд рдХрд░реЗрдВ? рдпрджрд┐ рдЖрдк рдРрд╕рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛:
F(f'currency_data__{partner.reporting_currency}')
рд▓реЗрдХрд┐рди f-strings
рд╕рдорд░реНрдерди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ F
рд╣рд╛рд▓рд╛рдВрдХрд┐ рдпрд╣ рддрдереНрдп рдХрд┐ Django ORM рдореЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рдиреЗрд╕реНрдЯреЗрдб json рдлрд╝реАрд▓реНрдбреНрд╕ рдХреЛ рдПрдХреНрд╕реЗрд╕ рдХрд░рдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рд╣реИ, рдмрд╣реБрдд рд╣реА рдордирднрд╛рд╡рди рд╣реИ - F('currency_data__USD')
ред
рдФрд░ рдЕрдВрддрд┐рдо annotate
рдмреНрд▓реЙрдХ _payable_in_cur
рдЧрдгрдирд╛ рд╣реИ, рдЬрд┐рд╕реЗ рд╕рднреА рдЖрджреЗрд╢реЛрдВ рдХреЗ рд▓рд┐рдП _payable_in_cur
рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдпрд╣ рдореВрд▓реНрдп рдЕрдиреБрдмрдВрдз рдореБрджреНрд░рд╛ рдореЗрдВ рд╣реЛрдирд╛ рдЪрд╛рд╣рд┐рдПред

.annotate( _payable_in_cur=( F('_payable_base') / F('_reporting_currency_rate') ) )
annotate
рд╡рд┐рдзрд┐ рдХреА рдЦрд╝рд╛рд╕рд┐рдпрдд рдпрд╣ рд╣реИ рдХрд┐ рдпрд╣ рдмрд╣реБрдд SELECT something AS something_else
рдирд┐рд░реНрдорд╛рдг рдХрд░рддрд╛ SELECT something AS something_else
рдХрд┐ SELECT something AS something_else
рдирд┐рд░реНрдорд╛рдг рдХрд░рддрд╛ рд╣реИ рдЬреЛ рд╕реАрдзреЗ рдЕрдиреБрд░реЛрдз рдореЗрдВ рд╢рд╛рдорд┐рд▓ рдирд╣реАрдВ рд╣реЛрддреЗ рд╣реИрдВред рдЗрд╕реЗ SQL рдХреНрд╡реЗрд░реА - query.__str__()
рдХреЛ рдЕрдирд▓реЛрдб рдХрд░рдХреЗ рджреЗрдЦрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред
рдпрд╣ рд╡рд╣ рдЖрдзрд╛рд░ рд╣реИ рдЬреЛ Django ORM рджреНрд╡рд╛рд░рд╛ base_query_annotated
рд▓рд┐рдП рдЬрдирд░реЗрдЯ рдХрд┐рдпрд╛ рдЧрдпрд╛ SQL рдХреЛрдб base_query_annotated
ред рдЖрдкрдХреЛ рдпрд╣ рд╕рдордЭрдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдмрд╛рд░ рдкрдврд╝рдирд╛ рд╣реЛрдЧрд╛ рдХрд┐ рдЖрдк рдЕрдкрдиреА рдХреНрд╡реЗрд░реА рдХреЛ рдХрд╣рд╛рдВ рдЕрдиреБрдХреВрд▓рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред
рдЕрдВрддрд┐рдо рдЧрдгрдирд╛
aggregate
рд▓рд┐рдП рдПрдХ рдЫреЛрдЯрд╛ рдЖрд╡рд░рдг рд╣реЛрдЧрд╛, рддрд╛рдХрд┐ рднрд╡рд┐рд╖реНрдп рдореЗрдВ, рдпрджрд┐ рд╕рд╛рдереА рдХреЛ рдХрд┐рд╕реА рдЕрдиреНрдп рдореАрдЯреНрд░рд┐рдХ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛ, рддреЛ рдЗрд╕реЗ рдЖрд╕рд╛рдиреА рд╕реЗ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХреЗред

def _get_data_from_query(query: QuerySet) -> Decimal: result = query.aggregate( _sum_payable=Sum(F('_payable_in_cur')), ) return result['_sum_payable'] or ZERO
рдФрд░ рдПрдХ рдФрд░ рдмрд╛рдд - рдпрд╣ рд╡реНрдпрд╡рд╕рд╛рдп рдХреА рд╕реНрдерд┐рддрд┐ рд╕реЗ рдЕрдВрддрд┐рдо рдлрд╝рд┐рд▓реНрдЯрд░рд┐рдВрдЧ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рд╣рдореЗрдВ рдЙрди рд╕рднреА рдЖрджреЗрд╢реЛрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЬрд┐рдиреНрд╣реЗрдВ рдЬрд▓реНрдж рд╣реА рднреБрдЧрддрд╛рди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред

before_payment_pending_query = _get_data_from_query( base_query_annotated.filter(_payment_pending__gt=today) )
рдбрд┐рдмрдЧрд┐рдВрдЧ рдФрд░ рд╕рддреНрдпрд╛рдкрди
рдмрдирд╛рдП рдЧрдП рдЕрдиреБрд░реЛрдз рдХреА рд╢реБрджреНрдзрддрд╛ рдХреЛ рд╕рддреНрдпрд╛рдкрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рдмрд╣реБрдд рд╣реА рд╕реБрд╡рд┐рдзрд╛рдЬрдирдХ рддрд░реАрдХрд╛ рдпрд╣ рд╣реИ рдХрд┐ рдЧрдгрдирд╛ рдХреЗ рдЕрдзрд┐рдХ рдкрдардиреАрдп рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд╕рд╛рде рдЗрд╕рдХреА рддреБрд▓рдирд╛ рдХрд░реЗрдВред
for morder in query: payable = morder.get_payable_in_cur() payment_pending = morder.get_payment_pending() if payment_pending > today: result['payment_pending'] += payable
рдХреНрдпрд╛ рдЖрдк "рдорд╛рдереЗ" рд╡рд┐рдзрд┐ рдЬрд╛рдирддреЗ рд╣реИрдВ?
рдЕрдВрддрд┐рдо рдХреЛрдб
рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рд╣рдореЗрдВ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЬреИрд╕рд╛ рдХреБрдЫ рдорд┐рд▓рд╛:
рдЕрдВрддрд┐рдо рдХреЛрдб def _get_data_from_query(query: QuerySet) -> tuple: result = query.aggregate( _sum_payable=Sum(F('_payable_in_cur')), ) return result['_sum_payable'] or ZERO def output(partner_id: int): today = dt.date.today() partner = query_get_one(Partner.objects.filter(id=partner_id)) query = MetaOrder.objects.filter(partner=partner, content_type__in=[ Hotel.get_content_type(), Car.get_content_type(), Upsell.get_content_type(), ]) result = defaultdict(Decimal) query_annoted = query.annotate( _payment_pending=Coalesce( 'hotel__payment_pending', 'car__payment_pending', 'upsell__payment_pending', ), _payment_due=Coalesce( 'hotel__payment_due', 'car__payment_due', 'upsell__payment_due', ), _refund=Coalesce( 'hotel__refund', Value(ZERO) ), _refund_currency_rate=Coalesce( 'hotel__refund_currency_rate', Value(Decimal('1')) ), _sell=Coalesce( 'hotel__sell', Value(ZERO) ), _sell_currency_rate=Coalesce( 'hotel__sell_currency_rate', Value(Decimal('1')) ), ).annotate(
рдпрд╣ рдЕрдм рдХреИрд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ:


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