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

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

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

مقدمة


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


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


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

ما هو حقل Char في أودو


في Odoo ORM، تم تصميم حقل Char لتخزين سلاسل النصوص القصيرة. إنه يتوافق مع عمود VARCHAR أو TEXT في PostgreSQL، اعتمادًا على ما إذا كنت تحدد حدًا للحجم.


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


إليك كيف يبدو في تعريف نموذج بايثون:

from odoo import fields, models

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

    customer_po_reference = fields.Char(
        string='Customer PO Reference',
        size=64,
        index=True,
    )

معامل string يحدد التسمية المعروضة في الواجهة. معامل size، الذي هو اختياري، يحدد عدد الأحرف. معامل index ينشئ فهرس قاعدة بيانات لعمليات البحث الأسرع.


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

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


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


في قاعدة البيانات، يتم تخزين حقول Char بدون حد للحجم كـ TEXT. تلك التي تحتوي على معامل size تستخدم VARCHAR(n). تتعامل PostgreSQL مع كلا النوعين بكفاءة، لذا فإن الفرق يتعلق في الغالب بفرض قيود الطول بدلاً من تمييز الأداء الكبير.


سمات الحقل الرئيسية

إليك أهم الخصائص لحقل Char في إطار Odoo:

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

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

في عروض النماذج، يتم عرض حقل Char كعنصر قياسي <input type="text">. في عروض القوائم، يتم عرضه كنص عادي. في عروض البحث، يدعم الفلاتر باستخدام عوامل التشغيل يحتوي، يساوي، ويبدأ بـ بشكل افتراضي.


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


التفاعل مع Odoo ORM

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

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


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


CRM: أرقام المرجع الخاصة بالعميل

تقوم العديد من الشركات بتعيين أرقام مرجعية داخلية لعملائها. يمكن لحقل Char في نموذج res.partner تخزين هذا الرمز، مما يجعله قابلاً للبحث من قائمة العملاء ومرئياً في أوامر البيع والفواتير. يمكن لفرق المبيعات استرجاع الحساب الصحيح بسرعة دون ارتباك عندما تشترك عدة عملاء في أسماء مشابهة.


المبيعات: مراجع أوامر الشراء

عندما يرسل العملاء أوامر شراء، فإنهم يتضمنون رقم PO الذي يحتاج إلى الظهور على الفواتير والمستندات الخاصة بالتسليم. حقل client_order_ref الأصلي في sale.order هو حقل Char. يتدفق تلقائيًا إلى الفاتورة، مما يقلل من الذهاب والإياب مع العميل حول المراجع المفقودة.


المخزون: مراجع المنتجات الداخلية

حقل default_code في product.template هو حقل Char أصلي في Odoo. يخزن المرجع الداخلي المستخدم عبر المستودعات، وأجهزة قراءة الباركود، وأوامر الشراء. الحفاظ على نظافة هذا الحقل وتناسقه هو أحد أولويات جودة البيانات الأكثر شيوعًا في تنفيذات المخزون.


المحاسبة: أرقام الضرائب والتسجيل

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


الموارد البشرية: معرفات الموظفين ورموز الشارات

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

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


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


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

أودو ستوديو هو أداة التخصيص منخفضة الكود المدمجة. لإضافة حقل Char دون كتابة أي كود:

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

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


استخدام بايثون في وحدة مخصصة

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

from odoo import fields, models

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

    x_erp_customer_id = fields.Char(
        string='ERP Customer ID',
        size=32,
        index=True,
        copy=False,
    )

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


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

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

field_id = models.execute_kw(
    ODOO_DB, uid, ODOO_API_KEY,
    'ir.model.fields', 'create',
    [{
        'name': 'x_custom_reference',
        'field_description': 'مرجع مخصص',
        'model_id': model_id,
        'ttype': 'char',
        'size': 64,
        'state': 'manual',
    }]
)

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

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


1. حدد حجمًا عندما تعرف الطول الأقصى

إذا كان الحقل يخزن رموز البلدان ISO، أو أرقام الهواتف، أو معرفات ذات طول ثابت، حدد size. هذا ينقل النية لأي شخص يقرأ النموذج ويمنع أخطاء إدخال البيانات غير المقصودة. يجب ألا يقبل حقل مصمم لتخزين رمز بلد مكون من حرفين سلسلة مكونة من 500 حرف دون أن يلاحظ ذلك.


2. أضف فهرسًا للحقول التي تبحث عنها بشكل متكرر

إذا كان المستخدمون يقومون بانتظام بتصفية أو البحث عن سجلات بواسطة حقل Char، مثل رمز العميل أو مرجع الطلب، قم بتعيين index=True. على الجداول التي تحتوي على عشرات الآلاف من السجلات، يمكن أن يحدث هذا فرقًا بين بحث يستغرق ثانية واحدة وانتظار يستغرق عشر ثوان.


3. استخدم translate=True للمحتوى متعدد اللغات

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


4. أعطِ الحقول أسماء تقنية واضحة ومتسقة

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


5. استخدم compute للمراجع المشتقة

يمكن حساب حقول Char ديناميكيًا. على سبيل المثال، يمكن بناء مرجع يجمع بين سنة ورقم تسلسل كحقل Char محسوب. مع store=True، يتم حفظ القيمة في قاعدة البيانات ويمكن استخدامها في فلاتر البحث والتقارير، بينما تظل منطق الحساب مركزيًا في طريقة واحدة.

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


عدم وجود حد للحجم يفتح الباب للبيانات السيئة

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


فقدان الفهارس على الحقول التي يتم البحث فيها بشكل متكرر

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


خلط Char مع حقل النص

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


نسيان الترجمة في الحقول متعددة اللغات

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


استخدام Char للبيانات التي يجب أن تكون اختيارًا أو علاقة

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

الأسئلة الشائعة


ما هو الفرق بين حقل Char وحقل النص في Odoo؟

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


هل يمكنني تحديد عدد الأحرف المخزنة في حقل Char؟

نعم. استخدم معلمة size عند تعريف الحقل في بايثون، على سبيل المثال fields.Char(size=64). في Odoo Studio، يمكنك تعيين هذا الحد في لوحة خصائص الحقل. إذا لم يتم تعيين حجم، فلن يكون للحقل حد طول مفروض على مستوى قاعدة البيانات.


كيف يمكنني جعل حقل Char يظهر في شريط البحث؟

أضف الحقل إلى عرض البحث للنموذج. في Studio، قم بتمكين خيار البحث في خصائص الحقل. في الكود، أضف <field name="your_char_field"/> داخل تعريف عرض <search> في XML الخاص بك. بمجرد إضافته، يمكن للمستخدمين تصفية السجلات بواسطة هذا الحقل مباشرة من شريط البحث.


هل يمكنني تخزين الأرقام في حقل Char؟

تقنيًا نعم، ولكن لا يُوصى بذلك للقيم التي تحتاج إلى حساب أو مقارنة عددية. استخدم حقول Integer أو Float للكميات والمبالغ. Char مناسب للسلاسل التي تحتوي على أرقام، مثل الرموز البريدية، أرقام الهواتف، أرقام IBAN، أو أرقام السلاسل، حيث يتم التعامل مع القيمة كنص بدلاً من رقم.


كيف يمكنني إنشاء حقل Char محسوب يخزن أيضًا قيمته؟

حدد الحقل باستخدام compute='_compute_my_field' وstore=True. اكتب طريقة الحساب باستخدام @api.depends() للإعلان عن الحقول الأخرى التي تؤدي إلى إعادة الحساب. مع store=True، يقوم Odoo بحفظ القيمة المحسوبة في قاعدة البيانات، مما يجعلها متاحة في عمليات البحث، الفلاتر، والتصديرات دون إعادة الحساب في كل قراءة.

الخاتمة


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


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


نموذج بيانات مصمم بشكل جيد يعتمد على أنواع الحقول الصحيحة هو أحد أهم أسس تنفيذ Odoo الناجح. حقل Char هو قطعة صغيرة من تلك اللغز، ولكنه يستحق الفهم بشكل صحيح.

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

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