django: خطأ غريب في الحقل المرتبط بالعكس

هذا هو النموذج الخاص بي

class UserAward(models.Model):
    user = models.ForeignKey(User, related_name='awards')
    award = models.CharField(max_length=255)
    week = models.SmallIntegerField(default=0)
    year = models.IntegerField(default=0)
    points_gained = models.IntegerField(default=0)
    timestamp = models.DateTimeField(auto_now=True)

وعندما أعطي هذا:

users = User.objects.filter (awards__award = 'level up'، awards__week = prev_wk، awards__year = prev_year) .order_by ('- profiles__level')

أتلقى هذا الخطأ:

حقل ذو صلة يحتوي على بحث غير صالح: السنة

إذا قمت بإزالة الاستعلام عامل التصفية (awards__year = prev_year) يعمل بشكل جيد.

أين المشكلة؟

0
prev_year is 2012. Prev_year is the really the week of the previous week. سيتم إجراء ترحيل قاعدة بيانات ، على الرغم من سنة كان من البداية
وأضاف المؤلف xpanta, مصدر
لا يوجد سبب خاص أعتقد أنه سيكون من الأسهل بالنسبة لي تصحيح الأخطاء إذا تم فصل جميع القيم لأن الكثير من النصوص الخارجية تعمل على أساس أسبوعي
وأضاف المؤلف xpanta, مصدر
هل هناك سبب لعدم استخدام DateField وتخزين السنة/الأسبوع بشكل منفصل؟
وأضاف المؤلف Burhan Khalid, مصدر
هل أضفت مؤخرًا سنة إلى النموذج؟ ستحتاج إلى إجراء ترحيل قاعدة بيانات للتأكد من أن الجدول يحتوي أيضًا على هذا العمود. خلاف ذلك ، ما هو نوع وقيمة prev_year ؟
وأضاف المؤلف Simeon Visser, مصدر

1 إجابة

جرب هذا:

users = User.objects.filter(awards__award='level up').filter(awards__week=prev_wk).filter(awards__year__exact=prev_year).order_by('-profiles__level')

يستخدم django في الأساس __ year لاستخراج حقل السنة من كائنات التاريخ التي تعتقد أنك تريد السنة من هذا الحقل

3
وأضاف