تخطي للذهاب إلى المحتوى

Odoo Context

متعرفش يعني إيه Context في Odoo؟ يبقى لسه مفتحتش الباب الحقيقي لقوة الفريم وورك ده!

الـ context في Odoo مش مجرد متغير إضافي بتمرره...

ده واحد من أهم الأدوات اللي بتخليك تتحكم في سلوك النظام من غير ما تغرق في تعقيدات الـ override أو تكسر الكود الحالي.

إزاي الـ Context بيغير قواعد اللعبة؟

تمرير معلومات إضافية بين الواجهات والـ backend

عايز تبعت قيمة معينة من الـ view علشان تتصرف بيها جوه ميثود؟

مثلاً: لما تفتح form من شجرة معينة، يتحط partner_id تلقائي؟ سطر context بسيط وهيظبط لك ده.


تحديد قيم افتراضية بشكل ديناميكي

من غير ما تكتب لوجيك داخل create، ببساطة:

<context="{'default_country_id': 64}" />


تغيير الدومين بشكل ذكي بناءً على الـ context

تخلي field يعرض قيم مختلفة حسب الشاشة اللي فاتح منها، أو حسب صلاحية المستخدم.


تقليل استخدام override

بدل ما تعمل override لـ create أو search، استخدم context وحدد السلوك المطلوب، خصوصاً لو بتشتغل على module generic وعايز تخليه flexible.

كتابة كود Clean, Modular, Reusable


أنت مش مضطر تكتب نفس الكود مرتين، طالما تقدر تتحكم بالـ context من الـ action أو الـ view


تمرير فلتر مخصص في الـ action:

<record id="action_custom_partner" model="ir.actions.act_window">

<field name="context">{'search_default_customer': 1}</field>

</record>

الموديل يفتح وفلتر العملاء مفعل تلقائيًا


استخدامه جوه Python:


def create(self, vals):

if self.env.context.get('from_invoice'):

# تنفيذ لوجيك مختلف لو جاي من فاتورة

vals['special_field'] = True

return super().create(vals)


Pro Tip:

الـ context بيتوارث تلقائيًا من view → method → method...

فممكن تبدأ تمرر قيمة من زرار أو action، توصل بيها لـ method داخلي في layer تانية وتتحكم بيها في السلوك كله.


الرسالة الأهم:

كل ما تتعمق في فهم الـ context، كل ما كودك يبقى أقوى، أذكى، وأسهل

Odoo Context
Top Business, Hesham tatawy 3 يوليو 2025
شارك هذا المنشور
علامات التصنيف
مدوناتنا
الأرشيف
أهم المصطلحات المحاسبية