2012-04-15 14 views
1

mein Modell geht es um eine Liste der Top-FilmeDjango Mongoengine EmbeddedDocument Abfrage Ausgabe

class Movie(Document): 
    title = StringField() 
     ... 
    ranks = ListField(EmbeddedDocumentField('Rank')) 

class Rank(EmbeddedDocument):  
    rank = IntField() 
    imdb_rating = FloatField() 
    date = StringField(required=True) 

Wie kann ich eine Abfrage schreiben, nur bekommen die Filme Rang Rekord in heute?

+0

Was denke ich Darin schlägt, gut Stackoverflow Etikette legt nahe, dass einige Ihre vorherigen Fragen benötigen möglicherweise eine akzeptierte Antwort. Korrigiere mich, wenn ich falsch liege. – rossdavidh

Antwort

1

Ich würde empfehlen, ein datetime Objekt für Datum anstelle einer Zeichenfolge zu verwenden, da es expliziter scheint. In beiden Fällen können Sie einfach alle Movie Dokumente mit einem Rang finden, die eine date Matching wie so heute hat:

Movie.objects(ranks__date__gte=datetime.today().date()) # using DateTimeField 

oder

Movie.objects(ranks__date="16/04/2012") # using StringField 
+0

Es funktioniert! Aber wie kann ich das Ergebnis in der Django-Vorlage wiederholen, um den Rang eines jeden Films zu erhalten? .. –

+0

Gut MongoDB-Abfrage gibt Dokumente zurück. Eine if-Anweisung kann die übereinstimmenden Ränge durchlaufen. – Ross

+0

Vergessen Sie nicht, als beantwortet zu markieren, um anderen bei der Suche zu helfen .. – Ross

Verwandte Themen