Amer Abdallah نشر 20 سبتمبر 2021 أرسل تقرير نشر 20 سبتمبر 2021 (معدل) أحاول البحث عن كائنات من نموذج User من خلال قيمة الحقل DateTimeField. من خلال الكود التالي: User.objects.filter(datetime_registred=datetime.date(2021,9,12)) أحصل على كائن queryset فارغ، أعتقد لأنني لم أحدد وقت في عملية البحث، حيث وضعت تاريخ فقط، لكنني أريد أي وقت خلال اليوم المحدد. أي أني أريد تحديد كل المستخدمين الذين سجلوا خلال هذا اليوم هل هناك طريقة سهلة في Django للقيام بذلك؟ تم التعديل في 20 سبتمبر 2021 بواسطة Amer Abdallah 2 اقتباس
1 سامح أشرف نشر 20 سبتمبر 2021 أرسل تقرير نشر 20 سبتمبر 2021 يمكنك أن تستخدم الخاصية contains على النحو التالي: User.objects.filter(datetime_registred__contains=datetime.date(2021,9,12)) أو يمكنك تحديد السنة والشهر واليوم يدويًا، وبالتالي سيتم تحديد كل المستخدمين الذين سجلوا في الموقع في هذا اليوم فقط بغض النظر عن وقت التسجيل: User.objects.filter(datetime_published__year='2021', datetime_published__month='09', datetime_published__day='12') وإن كنت تستخدم الإصدار 1.9 أو احدث من جانغو Django فيمكنك أن تستخدم الخاصية date، كالتالي: User.objects.filter(datetime_registred__date=datetime.date(2021, 9, 12)) 2 اقتباس
0 Ali Haidar Ahmad نشر 21 سبتمبر 2021 أرسل تقرير نشر 21 سبتمبر 2021 (معدل) يتم تنفيذ عمليات البحث هذه في django.views.generic.date_based على النحو التالي: {'date_time_field__range': (datetime.datetime.combine(date, datetime.time.min), datetime.datetime.combine(date, datetime.time.max))} كما يمكنك استخدام الخاصية startswith كالتالي: from datetime import date today = date.today() Model.objects.filter(date_created__startswith=today) أو من خلال الخاصية gte: Model.objects.filter(date_created__gte=today) وبشكل عام فإن الخاصية contain التي ذكرها سامح والخاصية startswith تعتبران الأسرع تم التعديل في 21 سبتمبر 2021 بواسطة Ali Haidar Ahmad 1 اقتباس
0 Ahmed Sharshar نشر 21 سبتمبر 2021 أرسل تقرير نشر 21 سبتمبر 2021 في البداية عليك أن تتأكد من أن كل البيانات على شكل datetime لان غير ذلك قد يسبب أخطاءا عن البحث: import datetime date_from = datetime.datetime.strptime(request.GET['q1'], '%Y-%m-%d') date_to = datetime.datetime.strptime(request.GET['q2'], '%Y-%m-%d') بعد ذلك تقوم بالبحث عن التواريخ التى تريد الحصول عليها ببساطة باستخدام الكود التالي: datetime = User.objects.filter(created__range=(date_from, date_to)) 1 اقتباس
0 محمد أبو عواد نشر 21 سبتمبر 2021 أرسل تقرير نشر 21 سبتمبر 2021 أفضل حل تم نشره لـ Django الاصدارين 1.7 ، 1.9 هو تسجيل تحويل (register a transform) كالتالي from django.db import models class MySQLDatetimeDate(models.Transform): lookup_name = 'date' def as_sql(self, compiler, connection): lhs, params = compiler.compile(self.lhs) return 'DATE({})'.format(lhs), params @property def output_field(self): return models.DateField() يؤدي هذا إلى تنفيذ بحث SQL مخصص عند استخدام "__date" مع datetimes. لتمكين التصفية على التواريخ التي تقع في تاريخ معين ، قم باستيراد هذا التحويل وتسجيله في DateTimeField, ثم يمكنك استخدامه في عوامل التصفية الخاصة بك كالتالي Foo.objects.filter(created_on__date=date) 1 اقتباس
السؤال
Amer Abdallah
أحاول البحث عن كائنات من نموذج User من خلال قيمة الحقل DateTimeField. من خلال الكود التالي:
أحصل على كائن queryset فارغ، أعتقد لأنني لم أحدد وقت في عملية البحث، حيث وضعت تاريخ فقط، لكنني أريد أي وقت خلال اليوم المحدد. أي أني أريد تحديد كل المستخدمين الذين سجلوا خلال هذا اليوم
هل هناك طريقة سهلة في Django للقيام بذلك؟
تم التعديل في بواسطة Amer Abdallah4 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.