Amer Abdallah نشر 4 سبتمبر 2021 أرسل تقرير نشر 4 سبتمبر 2021 لدي حقل في نموذج واحد، كالتالي: class Video(models.Model): date = fields.DateField(auto_now=False) الآن، أحتاج إلى تصفية الكائنات حسب النطاق الزمني. كيف أقوم بتصفية جميع الكائنات التي لها تاريخ بين 1 أغسطس 2021 و 31 أغسطس 2021؟ 2 اقتباس
1 سامح أشرف نشر 4 سبتمبر 2021 أرسل تقرير نشر 4 سبتمبر 2021 يمكنك أن تستخدم المدخل date__range، كالتالي: Video.objects.filter(date__range=["2021-08-01", "2021-08-31"]) لاحظ أن الحل السابق يقوم بتنفيذ جملة BETWEEN في SQL، مما يعني أن النطاق يتضمن يومي 1/8 و 31/8 أيضًا. إذا كنت لا تريد تضمين هذين اليومين مع النتائج، فيمكنك أن تستخدم خاصية gt (greater-than) و lt (less-than)، كالتالي: import datetime videos = Video.objects.filter(video_date__gte=datetime.date(2021, 8, 1), video_date__lte=datetime.date(2021, 8, 31)) أو إذا كنت تحاول فقط التصفية حسب الشهر: Video.objects.filter(date__year='2021', date__month='08') 2 اقتباس
0 محمد أبو عواد نشر 4 سبتمبر 2021 أرسل تقرير نشر 4 سبتمبر 2021 عند إجراء django ranges باستخدام filter ، تأكد من معرفة الفرق بين استخدام كائن date و كائن datetime __range شامل للتواريخ ولكن إذا كنت تستخدم كائن datetime لتاريخ الانتهاء ، فلن يتضمن إدخالات ذلك اليوم إذا لم يتم تعيين الوقت. from datetime import date, timedelta startdate = date.today() enddate = startdate + timedelta(days=6) Sample.objects.filter(date__range=[startdate, enddate]) سوف يقوم الكود بإرجاع كافة الإدخالات من تاريخ البدء إلى تاريخ الانتهاء بما في ذلك تلك التواريخ المدخلة 1 اقتباس
0 Ali Haidar Ahmad نشر 4 سبتمبر 2021 أرسل تقرير نشر 4 سبتمبر 2021 يمكنك القيام بذلك بالشكل التالي: start = date(2012, 12, 11) end = date(2012, 12, 18) new_end = end + datetime.timedelta(days=1) ExampleModel.objects.filter(some_datetime_field__range=[start, new_end]) أو لمرونة أكبر يمكنك تصميم FilterBackend كالتالي: class FilterBackend(generic_filters.BaseFilterBackend): def filter_queryset(self, request, queryset, view): #POST ل request.data أو predicate = request.query_params if predicate.get('from_date', None) is not None and predicate.get('to_date', None) is not None: queryset = queryset.filter(your_date__range=(predicate['from_date'], predicate['to_date'])) if predicate.get('from_date', None) is not None and predicate.get('to_date', None) is None: queryset = queryset.filter(your_date__gte=predicate['from_date']) if predicate.get('to_date', None) is not None and predicate.get('from_date', None) is None: queryset = queryset.filter(your_date__lte=predicate['to_date']) return queryset 1 اقتباس
السؤال
Amer Abdallah
لدي حقل في نموذج واحد، كالتالي:
الآن، أحتاج إلى تصفية الكائنات حسب النطاق الزمني. كيف أقوم بتصفية جميع الكائنات التي لها تاريخ بين 1 أغسطس 2021 و 31 أغسطس 2021؟
3 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.