Amer Abdallah نشر 17 سبتمبر 2021 أرسل تقرير نشر 17 سبتمبر 2021 (معدل) أحاول تصفية المستخدمين حسب حقل مخصص في كل ملف تعريفي خاص بالمستخدم ويسمى الحقل 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 ما الخطأ الذي قمت به هنا وكيف أوم بإصلاحه؟ تم التعديل في 17 سبتمبر 2021 بواسطة Amer Abdallah 1 اقتباس
1 سامح أشرف نشر 17 سبتمبر 2021 أرسل تقرير نشر 17 سبتمبر 2021 في جانغو 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) 2 اقتباس
0 Ahmed Sharshar نشر 17 سبتمبر 2021 أرسل تقرير نشر 17 سبتمبر 2021 يمكنك ببساطة اختيار الحدود التي تريد أن تختار منها كطريقة أخرى لعمل filter كالتالي: filter(gender='MALE', profile__level=(10, 50)) أو اختيار الطريقة التي أوضحها سامح لاختيار الحدود التي تريد عمل filter عليها كالتالي: User.objects.filter(gender='MALE', profile__level__gte = 10, profile__level__lte = 50).count() 1 اقتباس
السؤال
Amer Abdallah
أحاول تصفية المستخدمين حسب حقل مخصص في كل ملف تعريفي خاص بالمستخدم ويسمى الحقل profile. وهو عبارة عن حقل من نوع int، وتكون قيمته بين 0 و 3.
إذا قمت بالتصفية باستخدام علامة يساوي ، فسأحصل على قائمة بالمستخدمين بالمستوى المختار كما هو متوقع:
لكن عندما أحاول التصفية باستخدام علامة أقل من:
يظهر لي الخطأ التالي:
ما الخطأ الذي قمت به هنا وكيف أوم بإصلاحه؟
تم التعديل في بواسطة Amer Abdallah2 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.