Amer Abdallah نشر 30 أغسطس 2021 أرسل تقرير نشر 30 أغسطس 2021 أريد أن أكون قادرًا على عرض المنشورات التي أضافها المستخدم (تم إدراجها كمنشئ creator) أو تمت الموافقة عليها من قِبل مسؤول. ما أحاول أن أقوم به هو تنفيذ جملة SQL التالية: posts.creator = 'owner' or posts.accepted = True كيف أفعل هذا في جانغو Django؟ 1 اقتباس
1 سامح أشرف نشر 30 أغسطس 2021 أرسل تقرير نشر 30 أغسطس 2021 يمكنك أن تستعمل الكائن Qمع علامة pipe | كالتالي: from django.db.models import Q Post.objects.filter(Q(creator='owner') | Q(accepted=True)) أو يمكنك أن تقوم بإستخدام علامة pipe | بشكل مباشر كالتالي: posts = Post.objects.filter(post.creator = 'owner') | Post.objects.filter(post.accepted = True) 1 اقتباس
0 Ali Haidar Ahmad نشر 30 أغسطس 2021 أرسل تقرير نشر 30 أغسطس 2021 يجب أن تجعل الفلتر ديناميكياً ثم عليك استخدام Lambda مثلاً: from django.db.models import Q brands = ['ABC','DEF' , 'GHI'] queryset = Product.objects.filter(reduce(lambda x, y: x | y, [Q(brand=item) for item in brands])) بحيث أن: reduce(lambda x, y: x | y, [Q(brand=item) for item in brands]) <==> Q(brand=brands[0]) | Q(brand=brands[1]) |..... 1 اقتباس
0 عبدالباسط ابراهيم نشر 31 أغسطس 2021 أرسل تقرير نشر 31 أغسطس 2021 يمكنك استخدام ال operator.or من خلال المكتبة operator لاحظ المثال التالي filter_kwargs = { 'field_a': 123, 'field_b__in': (3, 4, 5, ), } list_of_Q = [Q(**{key: val}) for key, val in filter_kwargs.items()] Item.objects.filter(reduce(operator.or_, list_of_Q)) في Python3 ، لم تعد الدالة reducer موجودة built in في بايثون بعد الآن ، يمكنك استخدامها من خلال from functools import reduce 1 اقتباس
السؤال
Amer Abdallah
أريد أن أكون قادرًا على عرض المنشورات التي أضافها المستخدم (تم إدراجها كمنشئ creator) أو تمت الموافقة عليها من قِبل مسؤول. ما أحاول أن أقوم به هو تنفيذ جملة SQL التالية:
كيف أفعل هذا في جانغو Django؟
3 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.