بيشوى اميل شفيق2 نشر 27 مايو 2023 أرسل تقرير نشر 27 مايو 2023 كيف احدد عدد معين من السجلات الجديدة فى الmodel (django) تضاف كل يوم يضاف هذا العدد بدون زيادة و ليكن Flashcard كيف اضيف ١٠ فلاش كارد فقط لكل يوم فى جدول الفلاش كارد و لا يصبحوا ١١ بل ١٠ فقط 1 اقتباس
0 Kais Hasan نشر 27 مايو 2023 أرسل تقرير نشر 27 مايو 2023 يمكنك جدولة مهمة يومية للقيام بذلك. يمكن استعمال مكتبة celery كما يلي: from celery.schedules import crontab from celery.task import periodic_task @periodic_task(run_every=crontab(minute=0, hour=0)) def every_day(): print("سيتم طباعة هذه الرسالة كل يوم في منتصف اللليل") طبعاً بدل الطباعة ما ستقوم به هو المرور بحلقة for لها 10 تكرارات و كل مرة تقوم بإنشاء فلاش كارد و إضافتها. أي سيكون الكود الخاص بك شيء مثل ما يلي: from celery.schedules import crontab from celery.task import periodic_task @periodic_task(run_every=crontab(minute=0, hour=0)) def every_day(): for i in range(10): flash_card = FlashCard.objects.create(هنا نضع ما يلزم لهذا الغرض) الطريقة create ستقوم بإنشاء هذا الغرض و كما هو موضح يجب تمرير ما يلزم من أجل هذه الفلاش كارد، مثلاً عنوانها أو أي حقل تحتاجه. اقتباس
0 عبدالباسط ابراهيم نشر 27 مايو 2023 أرسل تقرير نشر 27 مايو 2023 تستطيع تحديد عدد معين من السجلات الجديدة في Django باستخدام: - Model Manager - Limiting queryset في حالتك، يمكنك عمل التالي: أنشئ Manager خاص بـ Flashcard from django.db import models class FlashcardManager(models.Manager): def create_flashcards(self, num): for i in range(num): Flashcard.objects.create() class Flashcard(models.Model): objects = FlashcardManager() # use the custom manager استدعي `.create_flashcards(10)` كل يوم لإنشاء 10 فلاش كارد فقط. from .models import Flashcard Flashcard.objects.create_flashcards(10) يمكن أيضًا استخدام `.bulk_create()` وتحديد عدد السجلات: Flashcard.objects.bulk_create([Flashcard() for i in range(10)]) أو استخدام `queryset.limit()`: for i in range(10): Flashcard.objects.create() هذه الطرق ستضمن إنشاء 10 فلاش كارد فقط كل يوم. تستطيع اختيار الطريقة المناسبة لك. اقتباس
0 Mustafa Suleiman نشر 27 مايو 2023 أرسل تقرير نشر 27 مايو 2023 تستطيع الإعتماد على الطريقة pre_save في نموذجك لتحديد عدد السجلات التي سيتم إضافتها، وذلك من خلال إضافة حقل في النموذج لتعقب عدد السجلات المضافة في اليوم الحالي وتحديثها بناءً على ذلك. from django.db import models from django.utils import timezone class Flashcard(models.Model): # تعريف حقول النموذج الأخرى هنا created_at = models.DateTimeField(auto_now_add=True) day_count = models.PositiveIntegerField(default=0) def save(self, *args, **kwargs): if not self.pk: # إذا كان السجل جديدًا today = timezone.now().date() # الحصول على عدد السجلات المضافة في اليوم الحالي flashcard_count = Flashcard.objects.filter(created_at__date=today).count() # التحقق مما إذا كان عدد السجلات المضافة يساوي 10 if flashcard_count >= 10: raise ValueError("You have reached the maximum number of flashcards for today.") # زيادة عدد السجلات المضافة في اليوم الحالي بمقدار واحد self.day_count = flashcard_count + 1 super(Flashcard, self).save(*args, **kwargs) هنا يتم إضافة حقل day_count لتعقب عدد السجلات المضافة في اليوم الحالي، وتحديد الحد الأقصى لعدد السجلات هو 10، وإذا تمت محاولة إضافة المزيد من السجلات، سيتم رفع استثناء ValueError. اقتباس
السؤال
بيشوى اميل شفيق2
كيف احدد عدد معين من السجلات الجديدة فى الmodel (django)
تضاف كل يوم يضاف هذا العدد بدون زيادة و ليكن
Flashcard
كيف اضيف ١٠ فلاش كارد فقط لكل يوم فى جدول الفلاش كارد و لا يصبحوا ١١ بل ١٠ فقط
3 أجوبة على هذا السؤال
Recommended Posts
انضم إلى النقاش
يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.