django: Seltsamer Fehler im reverse-verwandten Feld

Das ist mein Modell

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)

und wenn ich das gebe:

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

Ich bekomme diesen Fehler:

Das zugehörige Feld hat eine ungültige Suche: Jahr

Wenn ich filter (awards__year = prev_year) lösche Abfrage funktioniert gut.

Wo ist das Problem?

0
hinzugefügt bearbeitet
Ansichten: 1
prev_year ist 2012. Prev_year ist eigentlich das Jahr der letzten Woche. Wird eine Datenbankmigration durchführen, obwohl jahr von Anfang an war
hinzugefügt der Autor xpanta, Quelle
kein besonderer Grund. Ich dachte, es wäre einfacher für mich zu debuggen, wenn ich alle Werte getrennt hätte, weil viele externe Skripte auf einer wöchentlichen Basis laufen
hinzugefügt der Autor xpanta, Quelle
Gibt es einen Grund, warum Sie DateField nicht verwenden und Jahr/Woche separat speichern?
hinzugefügt der Autor Burhan Khalid, Quelle
Haben Sie kürzlich Jahr zum Modell hinzugefügt? Sie müssen eine Datenbankmigration durchführen, um sicherzustellen, dass die Tabelle auch diese Spalte enthält. Was ist der Typ und der Wert von prev_year ?
hinzugefügt der Autor Simeon Visser, Quelle

1 Antworten

Versuche dies:

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

Im Grunde verwendet django __ year , um das Jahrfeld aus Datumsobjekten zu extrahieren, von denen man glaubte, dass sie das Jahr aus diesem Feld wollten

3
hinzugefügt