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

الحقل البولي في أودو: الدليل الشامل

كل ما تحتاج لمعرفته حول حقل Boolean في نموذج بيانات Odoo، من سلوك مربع الاختيار إلى التخصيص الفني
6 مارس 2026 بواسطة
الحقل البولي في أودو: الدليل الشامل
Dasolo
لا توجد تعليقات بعد

مقدمة


حقل Boolean هو أحد أبسط أنواع الحقول في Odoo، وأيضًا من أكثرها استخدامًا. في كل مرة تقوم فيها بتحديد مربع اختيار في طلب مبيعات، أو وضع علامة على عميل كعميل نشط، أو تمييز منتج كمنتج مفضل، فإنك تتفاعل مع حقل Boolean.


على الرغم من بساطته، إلا أن لحقل Boolean بعض السلوكيات التي تستحق الفهم بشكل صحيح. معرفة متى تستخدمه، ومتى لا تستخدمه، وكيفية تكوينه بشكل جيد ستساعدك في بناء بيئات Odoo أنظف وتجنب بعض الأخطاء الشائعة التي يرتكبها حتى الفرق ذات الخبرة.


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

ما هو حقل Boolean في Odoo


في Odoo ORM، يخزن حقل Boolean واحدة من قيمتين: True أو False. إنه يتطابق مباشرة مع عمود BOOLEAN في PostgreSQL. لا يوجد أي غموض هنا: الحقل إما محدد أو غير محدد، مفعل أو معطل، نعم أو لا.


من منظور المستخدم، يظهر حقل Boolean كـ مربع اختيار في عرض النماذج. في عرض القوائم، يتم عرضه عادةً كأيقونة علامة تحقق عندما تكون القيمة True ولا شيء عندما تكون False. في بعض التكوينات، يظهر كزر تبديل بدلاً من مربع اختيار تقليدي، اعتمادًا على الواجهة المستخدمة.


إليك كيف يبدو تعريف حقل Boolean في وحدة Python Odoo:

from odoo import fields, models

class SaleOrder(models.Model):
    _inherit = 'sale.order'

    needs_manual_review = fields.Boolean(
        string='Needs Manual Review',
        default=False,
    )

معامل string يحدد التسمية المعروضة في الواجهة. معامل default يتحكم في القيمة الأولية عند إنشاء سجلات جديدة. بدون قيمة افتراضية، تعتبر Odoo الحقل False تلقائيًا، ولكن من الممارسات الجيدة إعلانها بشكل صريح.

في Odoo Studio، يُطلق على هذا النوع من الحقول ببساطة مربع اختيار. الحقول التي تم إنشاؤها من خلال Studio تتلقى بادئة x_studio_ تلقائيًا. عند إنشائها من خلال Python أو واجهة XML-RPC، تقوم بتعريف الاسم الفني بنفسك.

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


عند إضافة حقل Boolean إلى نموذج Odoo، يقوم الإطار بإنشاء العمود المقابل في قاعدة بيانات PostgreSQL تلقائيًا أثناء تثبيت الوحدة أو ترقيةها. لا حاجة لترحيل SQL يدوي.


هناك شيء مهم يجب فهمه: في Odoo، لا يحمل حقل Boolean أبدًا None أو NULL. تعيد ORM دائمًا إما True أو False. حتى إذا كانت عمود قاعدة البيانات ليس له قيمة، ستعيد Odoo False عند قراءة الحقل. هذا مختلف عن أنواع الحقول الأخرى مثل Many2one أو Char، حيث تأتي القيمة الفارغة كـ False أو None ويجب عليك التحقق من كلاهما.


خصائص الحقل الرئيسية

إليك الخصائص الرئيسية التي يمكنك تكوينها على حقل Boolean في إطار Odoo:

  • default: يحدد القيمة عند إنشاء سجل جديد. يتم تعيينه تقريبًا دائمًا إلى False، ولكن يمكن أن يكون True في سيناريوهات الاختيار.
  • compute: يربط طريقة Python التي تحسب القيمة ديناميكيًا. مفيد للأعلام المشتقة بناءً على حالة الحقول الأخرى.
  • store: عند استخدامه مع compute، يحدد ما إذا كانت القيمة محفوظة في قاعدة البيانات. مع store=True، يمكن استخدام الحقول Boolean المحسوبة في عوامل تصفية البحث والتقارير.
  • readonly: يمنع المستخدمين من تغيير قيمة الحقل يدويًا في الواجهة. شائع للعلامات المحسوبة التي يجب تعيينها فقط بواسطة النظام.
  • copy: يتحكم فيما إذا كانت قيمة الحقل تُنقل عند تكرار سجل. الافتراضي هو True. بالنسبة للعلامات مثل "تم الموافقة عليها"، عادةً ما تريد copy=False حتى تبدأ السجلات المكررة نظيفة.
  • groups: يقيد الرؤية والتحرير لمجموعات مستخدمين محددة.

كيف يظهر في العروض

في عروض النماذج، يتم عرض حقل Boolean كخانة اختيار HTML قياسية. في عروض القوائم، تعرض Odoo رمز تحقق لـ True ولا شيء لـ False بشكل افتراضي. هذا يجعل عروض القوائم سهلة المسح بصريًا.

يمكنك تغيير كيفية عرض حقل Boolean باستخدام أدوات العرض. تعرض أداة toggle الحقل كمفتاح بدلاً من خانة اختيار، مما يعمل بشكل جيد للإعدادات أو التفضيلات. لعرض القراءة فقط، تعرض أداة boolean_favorite القيمة كرمز نجمة، والتي يمكنك رؤيتها في نماذج المنتجات والاتصالات في Odoo القياسي.


استخدام حقول Boolean في عوامل التصفية

تعتبر حقول Boolean مريحة جدًا للاستخدام في مجالات Odoo، وهي تعبيرات التصفية المستخدمة في عروض البحث، والإجراءات الآلية، وقواعد الوصول. يبدو عامل تصفية للسجلات غير المحددة هكذا:

[('needs_manual_review', '=', True)]

نظرًا لوجود قيمتين محتملتين فقط، يمكنك أيضًا استخدام الشكل الأبسط بدون العامل:

[('needs_manual_review', '=', False)]

تعتبر هذه السلوكيات البسيطة في التصفية أحد الأسباب التي تجعل حقول Boolean تتكامل بسلاسة مع الإجراءات الآلية في Odoo، والإجراءات المجدولة، وإجراءات الخادم. من السهل التحقق منها والتصرف بناءً عليها دون شروط معقدة.


التفاعل مع Odoo ORM

قراءة وكتابة الحقول البوليانية في تطوير Odoo مباشرة كما هو الحال. يمكنك الوصول إلى القيمة على كائن السجل، ومقارنتها مع True أو False، وتعيينها مباشرة. يتولى ORM كل شيء آخر. لا توجد تحويلات، ولا حالات حافة للتسلسل، ولا مفاجآت عند تمرير القيم عبر واجهة XML-RPC، حيث إن True و False تتطابقان بشكل نظيف مع نظائرها البوليانية في XML-RPC.

حالات الاستخدام التجارية


تظهر الحقول البوليانية عبر كل قسم في تنفيذ Odoo النموذجي. إليك خمسة أمثلة عملية من سير العمل التجاري الحقيقي.


CRM: تتبع ما إذا كان قد تم تأهيل العميل المحتمل

غالبًا ما تحتاج فرق المبيعات إلى تحديد أي العملاء المحتملين قد تم مراجعتهم من قبل ممثل كبير وتم تأكيدهم كفرص قابلة للتطبيق. يوفر حقل بولياني يسمى is_qualified في نموذج عميل CRM للفرق وسيلة سهلة لتصفية خط أنابيبهم. يمكن التعامل مع العملاء المحتملين غير المؤهلين من قبل الموظفين المبتدئين، بينما يتم إعطاء الأولوية للذين تم تأهيلهم. تستبدل هذه خانة الاختيار البسيطة الحاجة إلى مرحلة مخصصة أو حقل حالة لهذا الغرض.


المبيعات: تحديد الطلبات التي تحتاج إلى مراجعة يدوية

في بعض الأعمال، تتطلب بعض طلبات المبيعات موافقة إضافية قبل تأكيدها، على سبيل المثال الطلبات التي تتجاوز مبلغًا معينًا أو للعملاء الجدد. يوفر حقل بولياني needs_manual_review على طلب البيع، جنبًا إلى جنب مع إجراء تلقائي يضبطه إلى True بناءً على قواعد العمل، لفريق المالية أو العمليات قائمة واضحة للعمل منها. يمكنهم تصفية قائمة الطلبات بناءً على هذا الحقل ومعالجة الموافقات دون الحاجة إلى البحث في قائمة الطلبات الكاملة.


المخزون: وضع علامة على المنتجات كخارج الكتالوج

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


المحاسبة: تحديد الفواتير التي تتطلب اهتمامًا

تحتاج فرق المالية أحيانًا إلى تحديد الفواتير التي تم الاعتراض عليها، أو تحتوي على تباين في الأسعار، أو تنتظر مذكرة ائتمان. بدلاً من الاعتماد على ملاحظات نصية حرة في الدردشة، يوفر حقل بولياني under_dispute للفريق وسيلة منظمة لتصفية والإبلاغ عن هذه الفواتير. يمكن أيضًا كتم التذكيرات التلقائية للفواتير التي تم تعيين هذا العلم إلى True، مما يمنع الضغط غير الضروري على العميل أثناء حل المشكلة.


الموارد البشرية: تتبع الشهادات وإكمال التدريب

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

إنشاء أو تخصيص حقل Boolean


هناك ثلاثة نهج رئيسية لإضافة حقل Boolean إلى نموذج Odoo، اعتمادًا على إعدادك الفني ومستوى التخصيص الذي تحتاجه.


استخدام Odoo Studio (بدون كود)

Odoo Studio هو الأداة المدمجة منخفضة الكود لتخصيص Odoo دون كتابة أي Python أو XML. لإضافة حقل Boolean من خلال Studio:

  1. افتح Odoo Studio من القائمة الرئيسية (يتطلب تطبيق Studio).
  2. انتقل إلى النموذج الذي تريد إضافة الحقل إليه.
  3. اسحب حقل Checkbox من الشريط الجانبي إلى تخطيط النموذج.
  4. قم بتعيين التسمية، القيمة الافتراضية، وأي قيود مطلوبة أو للقراءة فقط في لوحة خصائص الحقل.
  5. احفظ وأغلق Studio.

يتولى Studio كل شيء تلقائيًا: يتم إنشاء الحقل في قاعدة البيانات مع بادئة x_studio_ ويضاف إلى العرض. لا يتطلب الأمر إعادة تشغيل أو ترقية.


استخدام Python في وحدة مخصصة

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

from odoo import fields, models

class ResPartner(models.Model):
    _inherit = 'res.partner'

    x_is_key_account = fields.Boolean(
        string='Key Account',
        default=False,
        copy=False,
    )

بعد تعريف الحقل، تضيفه إلى ملف عرض XML المعني حتى يظهر في الواجهة. يقوم Odoo بإنشاء عمود قاعدة البيانات عند تثبيت الوحدة أو ترقيتها.


بالنسبة للحقول المنطقية المحسوبة، يبدو النمط كالتالي:

from odoo import api, fields, models

class SaleOrder(models.Model):
    _inherit = 'sale.order'

    is_high_value = fields.Boolean(
        string='High Value Order',
        compute='_compute_is_high_value',
        store=True,
    )

    @api.depends('amount_total')
    def _compute_is_high_value(self):
        for order in self:
            order.is_high_value = order.amount_total >= 10000

مع store=True، يتم حفظ القيمة المحسوبة في قاعدة البيانات، مما يجعلها متاحة في عوامل تصفية البحث وتجميع عرض القائمة دون إعادة حسابها في كل تحميل للصفحة.


استخدام واجهة برمجة التطبيقات XML-RPC

إذا كنت تدير تخصيصات Odoo برمجياً، على سبيل المثال كجزء من خط أنابيب نشر أو برنامج تكوين عن بُعد، يمكن إنشاء الحقول المنطقية عبر واجهة برمجة التطبيقات XML-RPC على نموذج ir.model.fields:

field_id = models.execute_kw(
    ODOO_DB, uid, ODOO_API_KEY,
    'ir.model.fields', 'create',
    [{
        'name': 'x_needs_manual_review',
        'field_description': 'Needs Manual Review',
        'model_id': model_id,
        'ttype': 'boolean',
        'state': 'manual',
    }]
)

قيمة state: manual تخبر Odoo أن هذا الحقل تم إنشاؤه خارج وحدة، وهو الإعداد الصحيح للحقل الذي تم إنشاؤه من خلال Studio أو واجهة برمجة التطبيقات. هذه هي بالضبط الطريقة التي تتعامل بها Dasolo مع إنشاء الحقول عن بُعد للعملاء كجزء من سير العمل التلقائي للتكوين.


أفضل الممارسات


1. دائماً حدد قيمة افتراضية

على الرغم من أن Odoo يعيد False للحقل المنطقي الذي لا يحتوي على قيمة افتراضية، إلا أنه من الأفضل ممارسة تحديد default=False بشكل صريح في تعريف الحقل الخاص بك. هذا يوضح النية بوضوح لأي شخص يقرأ كود النموذج ويمنع الغموض عند استخدام الحقل في الإجراءات التلقائية أو الفلاتر.


2. استخدم أسماء وصفية تقرأ كسؤال

تعمل أسماء الحقول البوليانية بشكل أفضل عندما تقرأ بشكل طبيعي كسؤال نعم/لا. أسماء مثل is_verified، needs_approval، has_warranty، أو is_key_account مفهومة على الفور. تجنب الأسماء الغامضة مثل flag، status، أو check، التي لا تخبرك شيئًا عن ما يمثله الحقل فعليًا.


3. قم بتعيين copy=False لعلامات الموافقة والحالة

إذا كان حقلك البولياني يمثل حالة لا ينبغي أن تنتقل عند تكرار سجل، على سبيل المثال "تمت الموافقة" أو "تم الإرسال"، دائمًا أضف copy=False. خلاف ذلك، ستؤدي عملية تكرار السجل إلى نسخ قيمة العلامة، مما قد يؤدي إلى ظهور سجلات تبدو معتمدة أو مرسلة عندما لم تمر عبر العملية الصحيحة.


4. استخدم الحقول البوليانية المحسوبة للحالات المشتقة

تجنب كتابة إجراءات الخادم أو كود بايثون الذي يقوم بتحديث حقل بولياني يدويًا استجابةً لتغييرات الحقول الأخرى. بدلاً من ذلك، عرّفه كحقل محسوب باستخدام @api.depends(). هذا يحافظ على منطقك في مكان واحد، ويعمل تلقائيًا في كل حفظ، وهو أسهل بكثير للصيانة وتصحيح الأخطاء من العمليات المتناثرة عبر أماكن متعددة في قاعدة الشيفرة.


5. أضف الحقول البوليانية إلى طرق البحث عندما تُستخدم للتصفية

إذا كان المستخدمون يحتاجون بانتظام إلى تصفية السجلات بناءً على حقل بولياني، أضفه صراحة إلى طريقة البحث. في الاستوديو، قم بتمكين خيار البحث في لوحة خصائص الحقل. في الشيفرة، أضفه إلى <search> عرض XML. هذا يمنح المستخدمين زر تصفية نظيف في شريط البحث بدلاً من إجبارهم على استخدام الفلاتر المتقدمة في كل مرة.

المزالق الشائعة


استخدام البوليان لحالة تحتوي على أكثر من خيارين

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


نسيان تعيين copy=False على علامات الموافقة

عندما يقوم المستخدمون بتكرار السجلات في Odoo، يتم نسخ جميع قيم الحقول بشكل افتراضي. سيتم تعيين علامة كانت محددة كـ "معتمدة" أو "مراجعة" إلى True على النسخة المكررة على الفور. إذا كان يجب أن يبدأ السجل المكرر من نقطة نظيفة، أضف copy=False إلى كل علامة تمثل إجراءً مكتملًا أو حالة تم الوصول إليها.


عدم إضافة الحقل إلى طريقة البحث

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


استخدام حقل منطقي بدلاً من الحقل النشط

يحتوي Odoo على حقل active مدمج في معظم النماذج يتحكم في ظهور السجلات في العروض القياسية. إذا كان حقلك المنطقي يهدف إلى إخفاء أو أرشفة السجلات، استخدم الحقل الأصلي active وآلية التبديل الخاصة به بدلاً من بناء حل رؤية مخصص. هذا يحافظ على توافق نموذج بياناتك مع سلوك Odoo القياسي ويتوافق بشكل جيد مع إجراءات الأرشفة وإلغاء الأرشفة المدمجة بالفعل في واجهة المستخدم.


حقول Boolean المحسوبة بدون store=True في الفلاتر

إذا قمت بإنشاء حقل منطقي محسوب وحاولت استخدامه في فلاتر البحث أو تجميع عرض القائمة بدون store=True، سيقوم Odoo بإصدار خطأ أو تجاهل الفلتر بصمت. الحقول المحسوبة غير المخزنة موجودة فقط في الذاكرة ولا يمكن استخدامها في استعلامات SQL. إذا كان الحقل المنطقي المحسوب يحتاج إلى أن يكون قابلًا للتصفية أو للتقارير، تأكد دائمًا من إضافة store=True إلى تعريف الحقل.

الخاتمة


الحقل المنطقي هو نوع من الحقول الذي تتوقف عن ملاحظته بالضبط لأنه يعمل بشكل جيد جدًا. إنه موجود في كل مكان في Odoo، من علامة active التي تتحكم في رؤية السجلات، إلى حقل is_published الذي يدير موقعك الإلكتروني، إلى العشرات من العلامات المخصصة التي تضيفها الشركات إلى سير العمل الخاص بها كل يوم.


فهم كيفية تصرفه في نموذج بيانات Odoo، وكيفية تكوينه بشكل صحيح مع الإعدادات الافتراضية والسمات الصحيحة، ومتى يجب استخدامه مقابل أنواع الحقول الأخرى مثل Selection سيساعدك في بناء تنفيذات نظيفة وقابلة للتنبؤ وسهلة الصيانة.

الحقل المنطقي المنجز بشكل جيد يكون غير مرئي للمستخدم النهائي. إنه يعمل ببساطة. الحقل المنطقي المستخدم بشكل غير صحيح يخلق ارتباكًا، وحالات فاسدة، وتزايد في عدد الحلول البديلة. الفرق يكمن في معرفة القواعد وتطبيقها بشكل متسق.

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

الحقل البولي في أودو: الدليل الشامل
Dasolo 6 مارس 2026
شارك هذا المنشور
تسجيل الدخول حتى تترك تعليقاً