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

السؤال

نشر

أحاول كتابة استعلام في جانغو Django للمنشورات التي يزيد عمرها عن 24 ساعة. يحتوي النموذج Post  على حقل DateTime باسم Created_at ويحتوي هذا الحقل على الوقت الذي تم إضافة المنشور فيه.

كيف أقوم بالحصول على كل المنشورات التي يزيد عمرها عن 24 ساعة في جانغو Django؟

Recommended Posts

  • 1
نشر

يمكنك استدعاء المنشورات التي يزيد وقت إنشاءها عن 24 ساعة عن طريق الكود التالي :

from django.shortcuts import render
from .models import Post
from datetime import datetime , timedelta
from django.utils.timezone import now


def calldate(request):
    time_threshold = datetime.now() - timedelta(hours=24)
    result = Post.objects.filter(date__lt=time_threshold)
    
    context = {'result' : result }
    return render(request , 'postdate.html' , context)

حيثُ تم إنشاء class داخل ملف views.py متغير time_threshold يقوم بتعريف الوقت فيما معناه ( 24 ساعه بعد الوقت الحالي ) ثم استدعاء المنشورات في متغير جديد result يأخذ الوقت من المتغير الذي قمنا بكتابته في السطر السابق بالعلم أن ما بين الأقواس " date__lt " ينقسم إلى " lt " وهي مناسبة في حالة استدعاء المنشورات التي تزيد عن 24 ساعه و  أن date الملاصقه للكلمة It هي متغيره حسب اسم الحقل الذي يحتوي على التاريخ في النموذج داخل models.py و التعويض بالطريقه الإفتراضيه عن طريق الـ context داخل ملف الـ html الخاص بالمنشورات

  • 1
نشر
بتاريخ 13 ساعات قال Mohssen A Mohssen:

أحاول كتابة استعلام في جانغو Django للمنشورات التي يزيد عمرها عن 24 ساعة. يحتوي النموذج Post  على حقل DateTime باسم Created_at ويحتوي هذا الحقل على الوقت الذي تم إضافة المنشور فيه.

كيف أقوم بالحصول على كل المنشورات التي يزيد عمرها عن 24 ساعة في جانغو Django؟

يمكنك ايضا استخدام هذه الطريقه للحصول على كل المنشورات التي يزيد عمرها عن 24 ساعة قم اولا بالتوجه الي ملف ال views الخاص بالمشروع وقم باستدعاء التالي:

from django.utils.timezone import now # للحصول على التاريخ الحالي
from datetime import datetime , timedelta # ال timedelta تمكننا من عمل العمليات الحسابية على التاريخ

بعد ذلك توجه الى ال view الذي تريد عمل الاسعلام فيه وقم بأنشاء الاستعلام كلأتي:

now = datetime.datetime.now()
earlier = now - datetime.timedelta(hours=5)
earlier_posts.objects.filter(Created_at__range=(earlier,now))

earlier_posts يحتوي على كل المنشورات التي عمرها أكثر من 24 ساعات ، ولا تقل عن 24 ساعات!

  • 0
نشر

يمكنك استرداد الكائنات باستخدام:

from datetime import timedelta
from django.db.models.functions import Now
# Now() للحصول على التاريخ الحالي
how_many_hours=24
# Created_at__lte للحصول على المطلوب مع تحديد المدة المطلوبة من خلال الوسيط filter نستدعي الدالة 
Post.objects.filter(Created_at__lte=Now()-timedelta(hours=how_many_hours)) #  المدّة الزمنية المطلوبة timedelta يمثّل كائن 

 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   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.

  • إعلانات

  • تابعنا على



×
×
  • أضف...