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

خطأ global name 'profile__level' is not defined في جانغو Django

Amer Abdallah

السؤال

أحاول تصفية المستخدمين حسب حقل مخصص في كل ملف تعريفي خاص بالمستخدم ويسمى الحقل profile. وهو عبارة عن حقل من نوع int، وتكون قيمته بين 0 و 3.

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

users = User.objects.filter(profile__level = 0)

لكن عندما أحاول التصفية باستخدام علامة أقل من:

users = User.objects.filter(profile__level < 3)

يظهر لي الخطأ التالي:

global name 'profile__level' is not defined

ما الخطأ الذي قمت به هنا وكيف أوم بإصلاحه؟

تم التعديل في بواسطة Amer Abdallah
رابط هذا التعليق
شارك على الشبكات الإجتماعية

Recommended Posts

  • 1

في جانغو Django لا يتم التصفية بإستخدام علامة أقل من > أو أكبر من <، ولكن تستخدم اسم الحقل مع lte أو gte، كالتالي:

أقل من أو يساوي:

users = User.objects.filter(profile__level__lte=0)

أكبر من أو يساوي:

users = User.objects.filter(profile__level__gte=0)

وإذا لم تريد أن تحصل على الكائنات التي تساوي هذه القيمة، أي أنك تريد أن تستخدم أقل من (وليس أقل من أو يساوي)، فكل ما عليك فعله هو حذف حرف e في نهاية اسم الخاصية، ليكون الكود كالتالي:

أقل من:

users = User.objects.filter(profile__level__lt=0)

أكبر من:

users = User.objects.filter(profile__level__lg=0)

 

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

  • 0

يمكنك ببساطة اختيار الحدود التي تريد أن تختار منها كطريقة أخرى لعمل filter كالتالي:

filter(gender='MALE', profile__level=(10, 50))

أو اختيار الطريقة التي أوضحها سامح لاختيار الحدود التي تريد عمل filter عليها كالتالي:

User.objects.filter(gender='MALE', profile__level__gte = 10, profile__level__lte = 50).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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...