Ich bin ein Django Anfänger, versucht, ein "Suche" Formular für mein Projekt mit MySql mit MyISAM-Engine zu erstellen. Bisher gelang es mir, das Formular zur Arbeit zu bringen, aber Django scheint nicht alle Felder auf die gleiche Weise zu durchsuchen. Die Ergebnisse sind zufällig. Exemple: Suche in region
kehrt kein Ergebnis oder schlechteste Suche in description
gut funktioniert, während howtogetin
nicht anzuwenden scheinen ..Wie kann ich Django mit QuerySets und MySql "Volltextsuche" in mehreren Feldern suchen lassen?
Hier mein Modell ist:
class Camp(models.Model):
owner = models.OneToOneField(User)
name = models.CharField(max_length=100)
description = models.TextField()
address1 = models.CharField(max_length=128)
address2 = models.CharField(max_length=128)
zipcode = models.CharField(max_length=128)
region = models.CharField(max_length=128)
country = models.CharField(max_length=128)
phone = models.CharField(max_length=60)
howtogetin = models.TextField()
def __str__(self):
return self.name
Hier ist meine Ansicht:
def campsearch(request):
if request.method == 'POST':
form = CampSearchForm(request.POST)
if form.is_valid():
terms = form.cleaned_data['search']
camps = Camp.objects.filter(
Q(name__search=terms)|
Q(description__search=terms)|
Q(address1__search=terms)|
Q(address2__search=terms)|
Q(zipcode__search=terms)|
Q(region__search=terms)|
Q(country__search=terms)|
Q(howtogetin__search=terms)
)
return render(request, 'campsearch.html', {'form':form, 'camps':camps})
else:
form = CampSearchForm()
return render(request, 'campsearch.html', {'form':form})
Irgendwelche Hinweise?
Ich habe so etwas im Internet gesehen, aber ich kann nicht wirklich herausfinden, wie es funktioniert. Hast du es getestet? Kannst du erklären, warum es eine bessere Implementierung ist als Djangos Standardimplementierung für ** search ** und ** incontains **? – adilbenseddik
Hi adilbenseddik, ja ich habe es in meinem Projekt und es funktioniert super. Dieser Ansatz wurde von Julien Phalip in http://julienphalip.com/post/2825034077/adding-search-to-a-django-site-in-a-snap –
Ich werde es versuchen. Danke für die Referenz. Hast du eine Ahnung, was nicht mit meinem Code funktioniert? es sollte nach der Dokumentation von Django recht gut funktionieren. – adilbenseddik