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

السؤال

نشر

عندما أقوم بعمل إستعلام من 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 والفرق بين هذه الطرق هو الأداء.

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

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

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

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...