اذهب إلى المحتوى
  • 0

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

Amer Abdallah

السؤال

عندما أقوم بعمل إستعلام من queryset في جانغو، كيف أعرف إن كان queryset يحتوي على نتائج من قاعدة البيانات أم لا؟ مثال:

users = Users.objects.filter(name__iexact = 'Amer Abdallah')

كيف أقوم بعمل شرط يتحقق فقط في حالة تم إعادة نتائج من قاعدة البيانات (في هذه الحالة وجود مستخدم باسم Amer Abdallah)؟ وفي حالة لم يكن هناك أي نتائج يتم تنفيذ كود مختلف؟

رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 1

الكائن queryset يوفر التابع exists والذي من خلال تستطيع معرفة إن كان هناك نتائج أم لا، حيث يعيد True في حالة وجود نتائج، و False في حالة كان الكائن فارغًا، ويمكنك إستخدامه على النحو التالي:

if users.exists():
    # أفعل شيء ما
else:
    # أفعل شيء آخر

كما يمكنك التحقق من الـ queryset بشكل مباشر كالتالي:

if users:
    # أفعل شيء ما
else:
    # أفعل شيء آخر

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

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

try:
    Users[0]
    # موجود
except IndexError:
    # غير موجود

وهذه الطريقة مفيدة جداً (أسرع بكثير في بعض الأحيان) إذا كان لديك عدد كبير من العناصر. كما يمكنك استخدام  فإذا كان هناك نتيجة يقوم بردها (وبالتالي تكافئ True إذا وضعناها ضمن عبارة شرطية) وإلا سيعطي None أي تكافئ (False):

if Users.first():
    #  موجود

كذلك يمكنك استخدام Users.count والفرق بين هذه الطرق هو الأداء.

رابط هذا التعليق
شارك على الشبكات الإجتماعية

  • 0

يمكنك استخدام الدالة count() التي تقوم بإرجاع عدد النتائج المسترجعة, اذا كانت تساوي صفر فلا يوجد أي نتائج والعكس صحيح

if users.count() == 0:
    # غير موجود
else:
    # موجود

 

رابط هذا التعليق
شارك على الشبكات الإجتماعية

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...