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

الدليل الكامل لـ Custom Fields في Odoo: كيفية الإنشاء والاستخدام

اكتشف كيفية إضافة حقول مخصصة لأي نموذج في Odoo — سواء عبر واجهة Odoo Studio البسيطة أو بكتابة بايثون مباشرة — وفهم السبب الذي يجعل هذا التخصيص ضروريًا لنموّ عملك.
6 مارس 2026 بواسطة
الدليل الكامل لـ Custom Fields في Odoo: كيفية الإنشاء والاستخدام
Dasolo
لا توجد تعليقات بعد

كل شركة لها متطلباتها الخاصة؛ هناك معلومات داخل فريقك لا يغطيها النظام القياسي — وهنا تظهر فائدة الحقول المخصّصة في أودو: وسيلة لحفظ تلك البيانات الفريدة مباشرة داخل نفس النظام.


بدلاً من إجبار سير العمل على التكيّف مع نموذج بيانات جامد، يتيح لك أودو إضافة حقول جديدة إلى أي سجل تقريباً — زبون، عرض سعر، منتج، أو فاتورة — وتخزن هذه الحقول المعلومات جنباً إلى جنب مع البيانات الأصلية.


دليلنا يشرح بصورة عملية ما هي الحقول المخصّصة، كيف تُدار داخل أودو، طرق إنشائها (بدون كود أو عبر التطوير)، وكيف تستغلها بطريقة تبقي قاعدة أودو مرتبة وقابلة للصيانة.

ما المقصود بحقل مخصّص في أودو؟


الحقل المخصّص هو ببساطة عمود إضافي في نموذج أودو موجود مسبقاً، يُخزن معلومة معينة مرتبطة بسجل، ويعمل بنفس منطق الحقول الافتراضية في النظام.


In Odoo, custom fields are identified by the x_ prefix. Fields created through Odoo Studio use names like x_studio_priority_level, while fields added programmatically might use a prefix specific to your project, such as x_dasolo_cost_center.


من وجهة نظر المستخدم، الحقل المخصّص يظهر ويتصرف تماماً كأي حقل قياسي: يظهر في الفورم، القوائم، فلاتر البحث، تجميعات التقارير وطباعة المستندات — المستخدم العادي لن يلاحظ أنه مخصّص.


أنواع الحقول المتاحة

أودو يوفّر مجموعة واسعة من أنواع الحقول لتغطية احتياجات مختلفة في تسجيل البيانات، منها ما يناسب نصوص قصيرة وطويلة، أرقام، علاقات بين سجلات، ومرفقات.

  • نص قصير (Char): مناسب لرموز مرجعية أو تصنيفات قصيرة
  • نص طويل: حقل متعدد الأسطر للملاحظات أو الوصف التفصيلي
  • عدد صحيح (Integer): أعداد كاملة مثل الكميات أو الدرجات
  • عشري (Float): أرقام بعشرات مفصولة بفاصل عشري للقياسات أو المعدلات
  • نقدي (Monetary): مبالغ مرتبطة بعملة معينة وتعمل مع حقل العملة
  • منطقي (Boolean): خيار نعم/لا أو مربع اختيار
  • تاريخ / تاريخ ووقت: لتخزين التواريخ أو الطوابع الزمنية
  • اختيار (Selection): قائمة منسدلة بقيم محددة مسبقاً
  • Many2one: رابط إلى سجل واحد في نموذج آخر
  • One2many: قائمة سجلات مرتبطة من نموذج آخر
  • Many2many: علاقة متعددة الاتجاهات لسجلات في نموذج آخر
  • ثنائي (Binary): رفع ملفات ومرفقات
  • HTML: نص منسق غني بالعناصر (غالباً للوصف الطويل)

اختيار النوع الصحيح من البداية يوفر عليك مشاكل لاحقة: إن كانت مجموعة القيم معروفة مسبقاً فالأفضل استخدام حقل اختيار بدل النص الحر لضمان اتساق البيانات.

كيف يعمل الحقل من الناحية العملية


أودو مبني فوق طبقة ORM (Object-Relational Mapping). كل نموذج بايثون يقابل جدول في قاعدة البيانات؛ عند إضافة حقل مخصّص، يسجّله أودو في طبقة الميتاداتا ويُنشئ العمود المقابل في PostgreSQL تلقائياً.


This is what makes the Odoo data model flexible: you are not patching the source code. You are extending the model through a metadata layer stored in the ir.model.fields table. Odoo reads that table at startup and builds the fields dynamically.


الفرق بين الحقول المُعرَّفة بالشيفرة وتلك المُعرَّفة عبر الواجهة

في تطوير أودو الاعتيادي، تُعرَّف الحقول داخل كلاس النموذج في بايثون باستخدام أدوات إطار العمل؛ هذه الطريقة جزء من عملية التطوير القياسية.


مثال نموذجي لتعريف حقل في بايثون يظهر كتعريف داخل موديل يرث نموذجاً موجوداً ثم يضيف الحقل المطلوب.

Custom fields created via the UI or API follow a different path: they are stored with state = 'manual' in ir.model.fields and loaded at runtime. Both approaches produce a real database column and behave identically from the user perspective.


العلاقات بين الحقول والتكامل المتبادل

عند إضافة Many2one يشير إلى نموذج آخر، يتوقع أودو وجود جهة مقابلة (One2many) على الطرف الآخر لأن هذا يساعد ORM على التنقّل بين السجلات وعرض العلاقات في الواجهة.


For example, if you add a x_project_id (Many2one to project.project) on a sale order, you should also add x_sale_order_ids (One2many back to sale.order) on the project model. Without this, navigation from the project to its linked orders is not possible through the standard interface.


الحقول المحسوبة (Computed Fields)

الحقول المحسوبة قيمتها تُستخلص آلياً من بيانات أخرى عبر دوال بايثون مرتبطة بالحقل؛ تكون عادة للقراءة فقط وتتحدّث تلقائياً عند تغيّر المتغيرات المعتمدة.


الحقول المحسوبة قوية لكن تتطلب كتابة كود؛ عبر Odoo Studio لا يمكن إنشاؤها بسهولة بدون تفعيل وضع المطوّر ومعرفة بسيطة ببايثون.

أمثلة عملية للاستخدام في الشركات


في عملنا مع عملاءنا نرى الحقول المخصّصة في معظم المشاريع؛ أدناه خمس حالات عملية متكررة تعتمد عليها الشركات فعلياً.

1. مبيعات وCRM: تحسين تصنيف العملاء المحتملين

فرق المبيعات تحتاج أحياناً تصنيفاً أدق من الحقول الافتراضية؛ حقل اختيار مثل "قطاع النشاط" أو علاقة Many2one إلى نموذج "شريحة السوق" الداخلي يساعد المندوبين على تصفية وفرز العملاء وإعطاء تقارير مفيدة للإدارة.


2. المبيعات: ربط رموز مشاريع داخلية بالعروض

شركات تُفوّتر حسب المشروع تحتاج إرفاق رمز مشروع أو مرجع ميزانية لكل عرض. حقل Char بسيط باسم "رمز المشروع" على سجل عرض السعر يوفّر إمكانية الطباعة والفلترة دون ربط كامل بنظام إدارة المشاريع.


3. المخزون: صفات تقنية خاصة بالمنتج

المصنعون قد يضيفون حقولاً مثل "فترة الضمان (بالشهور)"، "المعيار المعتمد" كقائمة اختيار، أو "بلد الصنع" كرابط إلى قائمة البلدان — كل هذا يظهر في شاشة المنتج ويستعمل في تقارير المخزون.


4. المحاسبة: تخصيص التكاليف ومراكز التكلفة

Finance teams frequently need to tag invoices or journal entries with a cost center or budget line. A Many2one field on account.move pointing to a custom "Cost Center" model allows detailed cost allocation without modifying Odoo's analytic accounting setup. Filters, pivot tables, and exports all respect the field immediately after creation.


5. الموارد البشرية: بيانات توظيف خاصة

HR departments often collect data during onboarding that does not fit standard employee fields: contract types specific to a country, internal skill categories, or fleet assignment references. Custom fields on hr.employee keep this information inside Odoo rather than in a separate spreadsheet, making it searchable and reportable.

كيف تنشئ أو تعدّل حقل مخصّص


طريقتان أساسيتان لإضافة الحقول؛ الاختيار يعتمد على الموارد الفنية وتعقيد الحاجة.


الخيار الأول: Odoo Studio (بدون كود)

Odoo Studio أسرع حل للمستخدمين غير التقنيين؛ يتيح إضافة حقل إلى أي عرض بخطوات بصرية بسيطة.

  1. افتح التطبيق أو نوع السجل الذي تريد تعديله، مثل نموذج أمر بيع.
  2. اضغط أيقونة القلم للدخول في وضع التعديل عبر Studio.
  3. اسحب نوع الحقل من اللوحة الجانبية وضعه داخل النموذج.
  4. عيّن تسمية الحقل، الاسم التقني، والخصائص المطلوبة.
  5. احفظ واغلق Studio.

Studio creates the field in ir.model.fields with the x_studio_ prefix and adds it directly to the view. No deployment or server restart is needed. This is the recommended approach for straightforward fields that do not require custom logic.


الخيار الثاني: التخصيص التقني عبر API أو وحدة بايثون

للمشاريع التقنية، تُنشأ الحقول برمجياً عبر XML-RPC أو بكتابة موديل بايثون داخل موديول؛ هذا مناسب للحالات التي تحتاج حسابات، قيود معقدة، أو تتطلّب تتبّع في نظام التحكم بالإصدارات.


باستخدام API يمكن إنشاء حقل اختيار على سجل أمر بيع عبر استدعاءات لإنشاء سجل في 'ir.model.fields'.


المثال التقني يوضّح البحث عن معرف النموذج ثم إنشاء مدخلة لحقل جديد مع تحديد نوعه وقيمه وحالته 'manual' عبر الاستدعاءات المناسبة.

هذه الطريقة جزء من سير عمل مطوّري أودو لإضافة حقول دون تعديل الملفات المصدرية، ومفيدة للإعدادات عن بُعد والبرمجيات النصّية للنشر الآلي.


أما النهج الكامل بموديول بايثون فيُستخدم لتعريف الحقول داخل كلاس ويتم تحميله كموديول أودو — الأكثر ملاءمة للصيانة عبر الترقيات وتتبع التغييرات في Git.


إظهار الحقل في الواجهة

إنشاء الحقل لا يعني تلقائياً ظهوره في الفورم أو القوائم؛ عليك إضافته إلى العرض المناسب. مع Studio يتم ذلك أثناء الإنشاء، وعبر التطوير تعدّل XML للعرض أو ترث العرض وتدرج الحقل في المكان المطلوب.


ممارسات موصى بها للحقول المخصّصة


الحقول سهلة الإنشاء، لكن بنية سيئة للحقول تؤدي لتعقيدات يصعب إصلاحها؛ هذه ممارسات تقلّل المشكلات.


استخدم حقول الاختيار بدل النص الحر كلما أمكن

إذا كانت القيم معروفة، حقل اختيار يمنع التفاوت (عميل، client، CLIENT) ويحافظ على نظافة الفلاتر والتقارير دون حاجة لتصحيحات يدوية.


سمِّ الحقول بوضوح وبطريقة متسقة

The technical name (x_project_type) should reflect the content, not the position on the form. A field named x_field_1 is impossible to maintain six months later. Use a consistent naming convention and document what each field is for.


لا تُفرط في توسيع النماذج الافتراضية

إضافة عدد كبير من الحقول إلى نموذج واحد علامة على أن كياناً جديداً سيكون أنسب؛ إذا كانت مجموعة حقول تشكّل كياناً منفصلاً كالمشاريع أو العقود فأنشئ نموذجاً جديداً واربطه بعلاقة Many2one.


اختبر دائماً على نسخة تجريبية من قاعدة البيانات

قبل تطبيق تغييرات الانتاج جرّبها على ستاجينج؛ إنشاء حقل في النموذج الخطأ أو بنوع خاطئ قد يحتاج تنظيفاً يدوياً لا تريده في بيئة الإنتاج.


وثّق الحقول المخصّصة

سجل كل حقل: النموذج، الاسم التقني، الهدف، ومن طلبه — مع الوقت تتكدس الحقول وإذا لم تُوثّق تصبح إدارة النظام مهمة شاقة.


استخدم الأدوات المناسبة للمنطق المحسوب

عندما تعتمد قيمة الحقل على حقول أخرى، استعمل حقلاً محسوباً بدل إدخال يدوي لتقليل الأخطاء؛ الحقول المحسوبة جزء من وظائف بايثون في أودو ولها توثيق واضح.

أخطاء شائعة يجب تجنّبها


مشكلات متكررة تظهر حتى لدى الفرق المتمرسة؛ فيما يلي الأخطاء الشائعة وكيفية تجنّبها.


نسيان إضافة One2many عند إنشاء Many2one

الخطأ الأكثر شيوعاً هو عدم إنشاء الطرف المعاكس للعلاقة؛ يؤدي ذلك إلى فقدان التنقّل بين السجلات من جهة النموذج الآخر. أنشئ الحقلين معاً دوماً.


حذف حقل يحتوي على بيانات

حذف الحقل يزيل العمود وبياناته نهائياً بلا استرجاع؛ إن كانت هناك إحتمالية للاستخدام مستقبلاً فالأفضل إخفاء الحقل أو أرشفته بدلاً من حذفه.


إنشاء الحقول مباشرة في بيئة الإنتاج

التغييرات المباشرة على قاعدة الإنتاج محفوفة بالمخاطر حتى لو بدت بسيطة؛ اختبار مسبق على بيئة تجريبية يقلّل من الأخطاء التي قد تسيء لتجربة المستخدم.


التصادم مع أسماء الحقول الافتراضية

Odoo will reject a field name that already exists on the model, but it is easy to accidentally create a field that shadows a field from a module you install later. Using a company-specific prefix (such as x_acme_) for your custom fields reduces this risk considerably.


إضافة الحقل إلى الواجهة دون التفكير بتجربة المستخدم

وجود الحقول لا يعني وجوب عرضها دائماً — النماذج المكتظة تبطئ العمل. إذا كان الحقل ذا صلة في سياق محدد ضعه في تبويب خاص أو اجعله مرئياً بشروط منطقية.


خلط حقول Studio مع الحقول التقنية بلا نظام

المزج العشوائي بين تخصيصات Studio والكود قد يخلق تكرار وظائف أو أسماء متضاربة؛ اتفق على استراتيجية — استخدام Studio للمهام البسيطة والكود للمنطق المعقّد — وإلا ستتعقّد الصيانة.

خلاصة


الحقول المخصّصة وسيلة بسيطة وفعّالة لتكييف أودو مع عملك: لا تحتاج لتعديل الشيفرة، تندمج مع المنصة وتوفّر التقاط بيانات دقيق دون حلول ملتوية.

المهم التخطيط قبل التنفيذ: اختر نوع الحقل المناسب، سمِّ الحقول بشكل واضح، احترم قواعد العلاقات، ووثّق ما تنشئه — بنية جيدة تجعل نظام أودو أسهل للصيانة والتطوير مع نمو عملك.


سواء كنت تستخدم Studio لحلول سريعة بدون كود أو تكتب وحدات بايثون كجزء من مشروع تخصيص أوسع، المبادئ نفسها تبقى: طابق الحقل مع نوع البيانات، حافظ على نظافة النموذج، وجرّب قبل النشر في بيئة الإنتاج.

في Dasolo نساعد الشركات على تنفيذ وتخصيص وتحسين أودو ليتوافق مع سير عملهم الفعلي؛ سواء تحتاج إضافة عدد قليل من الحقول المخصّصة أو بناء موديول مخصص من الصفر، فريقنا جاهز لدعمك.

تواصل معنا للحصول على استشارة حول تنفيذ أودو؛ سنراجع إعدادك الحالي ونقترح المسار الأنسب والأكثر نظافة للمضي قدماً.

الدليل الكامل لـ Custom Fields في Odoo: كيفية الإنشاء والاستخدام
Dasolo 6 مارس 2026
شارك هذا المنشور
تسجيل الدخول حتى تترك تعليقاً