"إذا أراد العامل أن يؤدي عمله بشكل جيد، فعليه أولاً أن يشحذ أدواته." - كونفوشيوس، "مختارات كونفوشيوس. لو لينجونج"
الصفحة الأمامية > برمجة > كيفية إرسال CharField إلى عدد صحيح في Django ORM؟

كيفية إرسال CharField إلى عدد صحيح في Django ORM؟

تم النشر بتاريخ 2024-11-10
تصفح:798

How to Cast a CharField to an Integer in Django ORM?

تحويل حقل Char إلى عدد صحيح في Django ORM

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

لماذا CAST غير متاح؟

في الإصدارات السابقة من كانت Django أو استعلامات SQL الأولية أو وظائف قاعدة البيانات ضرورية لمثل هذه السيناريوهات. ومع ذلك، مع تقديم وظيفة Cast في Django 1.10، يمكنك تحقيق هذا الإرسال داخل ORM نفسه.

استخدام وظيفة Cast

لإلقاء CharField إلى عدد صحيح، استخدم بناء الجملة التالي:

from django.db.models import Cast, IntegerField

students.objects.annotate(
    student_id_int=Cast('student_id', IntegerField())
).filter(student_id_int__contains=97318).order_by('-student_id_int')

سيؤدي هذا إلى إضافة تعليق توضيحي لمجموعة الاستعلامات بحقل جديد يسمى Student_id_int، والذي يتم تحويله إلى نوع عدد صحيح. يمكنك بعد ذلك استخدام هذا الحقل الجديد للتصفية والترتيب حسب الرغبة.

فوائد استخدام Cast

يوفر استخدام Cast العديد من الفوائد:

  • النوع الآمن: يضمن أن القيمة الناتجة من النوع المحدد.
  • يتجنب الخام الاستعلامات: يحتفظ باستعلاماتك داخل ORM، مما يبسط عملية الصيانة ويقلل من مخاطر حقن SQL.
  • فعال: ينفذ عملية الصب بكفاءة على مستوى قاعدة البيانات.

المرجع

لمزيد من المعلومات حول الإرسال في Django ORM، راجع الوثائق:

    [وظائف قاعدة البيانات: Cast](https://docs.djangoproject.com/en/stable/ref/models/database-functions/#cast)
أحدث البرنامج التعليمي أكثر>

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

Copyright© 2022 湘ICP备2022001581号-3