2016-06-17 12 views
1

Ich lerne Django und ich arbeite derzeit an einem Blog-Projekt. Ich habe eine grundlegende Suchfunktion, die die Beiträge entsprechend filtert. Es funktioniert gut, indem Sie nach Inhalt in meinem Titel und Inhaltsfilter der Beiträge suchen. Ich versuche, einen neuen Filter hinzuzufügen, damit ich den Monat zum Beispiel "März" eintippen kann und dann alle Beiträge ausfiltert, die im März veröffentlicht wurden. Alle Modelle der Post (nur ein normaler Post in einem Blog) hat dies:Django Suche Beiträge Abfrage Filter Monat

models.py 

class Post(models.Model): 
    title = models.CharField(max_length=120) 
    content = models.TextField() 
    publish = models.DateField(auto_now=False, auto_now_add=False) 

Und in meinem views.py habe ich folgende Suchfunktion: (nur die relevanten Sachen)

views.py 

queryset_list = Post.objects.all() 
query = request.GET.get("q") 
    if query: 
     queryset_list = queryset_list.filter(
     Q(title__icontains=query) | 
     Q(content__icontains=query) | 
     Q(publish__icontains=query) 
     ).distinct() 

In der Vorlage wird das Veröffentlichungsattribut wie folgt angezeigt: "12. Juli 2016", wenn das Veröffentlichungsdatum auf 2016-07-12 festgelegt ist.

Wie ich schon erwähnte filtert die Suchfunktion die Posts gut, wenn der Titel oder der Inhalt = zu der Abfrage ist, aber es funktioniert nicht, wenn ich nach "Juli" suche. Dann gibt es keine Beiträge zurück.

Ich würde gerne wissen, was ich tun kann, damit es die Beiträge nach dem Veröffentlichungsdatum auch filtern kann.

Antwort

0

Ich fand eine Lösung. Ich habe festgestellt, dass wenn ich nach "07" statt nach Juli suche, die Beiträge entsprechend herausfiltert, so dass das momentan mein Problem löst, da das Blog nur von mir benutzt wird. Es kann natürlich mit einem Python in das Monatswort konvertiert werden.

Dies liegt daran, dass Sie das DateField im Format JJJJ/MM/TT eingeben. Daher wird Post.publish auch in diesem Format sein.