Seite 1 von 1
[Django] Suche markieren?
Verfasst: Freitag 11. Dezember 2009, 11:08
von csc
Grüß euch,
Ich habe Django offen und suche etwas im Suchfeld von Personen oder so. Gebe "Peter" oben ein und er gibt mir alle Peters aus der Datenbank aus. Jetzt könnte Peter ja auch in der Spalte "2. Name" sein oder in der Firma "Peter" sein und in der Email vorkommen oder so aber ich will ja nur die wirklichen "Peters" haben. Fällt mir auf dem ersten blick nicht wirklich auf darum wollt ich fragen ob ich die Suche im Suchfeld in der Anzeige unten alla Googlesuche markieren kann? So dass Peter dann in der suche ersichtlich als "Peter" markiert ist? Weil dann fällt mir natürlich sofort auf dass mitten in der Email Peter oder im 2. Namenfeld Peter steht...
Gruß Chris
Verfasst: Freitag 11. Dezember 2009, 16:10
von programmersbook
Hi!
Da würde ich nach "Peter" suchen und mit "<b>Peter</b>" ersetzen.
Keep it simple!
Verfasst: Freitag 11. Dezember 2009, 16:29
von Hyperion
programmersbook hat geschrieben:
Da würde ich nach "Peter" suchen und mit "<b>Peter</b>" ersetzen.
Besser mit <strong>
csc hat geschrieben:
...aber ich will ja nur die wirklichen "Peters" haben
Was ist denn ein wirklicher Peter? Wodurch zeichnet er sich auf Datenebene aus?
Ich kenne mich mit Django nicht wirklich aus, daher die Frage: Geht es vom Plain-Text Suche oder suchst Du gezielt nach dem Wert eines Attributes?
Verfasst: Freitag 11. Dezember 2009, 20:15
von Leonidas
Hyperion hat geschrieben:csc hat geschrieben:
...aber ich will ja nur die wirklichen "Peters" haben
Was ist denn ein wirklicher Peter? Wodurch zeichnet er sich auf Datenebene aus?
Ich nehme an ein wirklicher Peter ist einer, dessen Vorname-Attribut "Peter" lautet. Ist halt noch die Frage ob Vornamen wie "Hans-Peter" oder "Salpeter" immer noch als wirklicher Peter gelten.
Verfasst: Dienstag 15. Dezember 2009, 12:03
von csc
Mir reicht es erst mal, wenn die Suche dann unten in der Anzeigetabelle markiert ist. Aber mit einem einfachen <b></b> ist es da nicht getan denke ich.
Wie er das in Django sucht ist mir auch was fraglich... Aber theoretisch durchsucht er die Datenbank... aber kanns nicht wirklich sagen.
Verfasst: Dienstag 15. Dezember 2009, 13:58
von Leonidas
csc hat geschrieben:Mir reicht es erst mal, wenn die Suche dann unten in der Anzeigetabelle markiert ist.
Welche Anzeigetabelle?
csc hat geschrieben:Wie er das in Django sucht ist mir auch was fraglich... Aber theoretisch durchsucht er die Datenbank... aber kanns nicht wirklich sagen.
Wer ist 'er'?
Re: [Django] Suche markieren?
Verfasst: Mittwoch 16. Dezember 2009, 10:08
von jens
Verfasst: Freitag 18. Dezember 2009, 09:42
von csc
@Leonidas:
Code: Alles auswählen
class Person(models.Model):
company =models.ForeignKey(Company,null=True,blank=True,verbose_name='Firma')
position = models.ForeignKey(Position,null=True,blank=True)
salut = models.ForeignKey(Salutation,verbose_name='Anrede')
adviser = models.ForeignKey(Adviser,null=True,blank=True,verbose_name='Betreuer')
titel = models.ForeignKey(Title,verbose_name='Titel',null=True,blank=True)
birth = models.CharField('Geburtstag',max_length=20,null=True,blank=True,help_text="Bitte halten sie folgene Formatierung ein: <em>DD.MM.YYYY</em>.")
fname = models.CharField('Vorname',max_length=100)
sname = models.CharField('Nachname',max_length=100)
comment = models.CharField('Kommentar',null=True,blank=True,max_length=40)
subkey = models.ManyToManyField(SubTag,blank=True,null=True,verbose_name='Stichwort')
.
.
.
Wenn ich davon ein Objekt dann in Django erstelle sind wir uns doch einig, dass mir die erstellte / noch mehr erstellten Personen angezeigt werden oder? Das ist meine "Anzeigetabelle" Da hab ich nen Suchfeld drüber gapappt und wenn ich suche filtert er 1A alles raus aber er durchsucht halt jede Spalte da nach dem Begriff... Den wollte ich dann nach der Suche in der Ansicht einfach Fett oder Kursiv angezeigt haben wollen.
"Er" ist einfach mein Django Projekt ^^ Ich finde wenn man etwas personifiziert kann man sich besser über "Ihn" aufregen
@jens: Hmm... Ich verstehs noch nicht ganz was da passiert aber ich glaube das ist nicht ganz das, was mir weiterhilft.
Verfasst: Freitag 18. Dezember 2009, 09:47
von Hyperion
Auch wenn ich mich nicht in Django auskenne: Man wird doch auch in Django gezielte DB-Abfragen realisieren können, oder nicht? Also frage die DB doch einfach nur nach dem Feld "sname" und schon hast Du genau die, die Du wolltest!?!
Verfasst: Freitag 18. Dezember 2009, 09:50
von csc
Ja aber die Suche oben ist ja ne allgemeine Suche. Weil kaum will ich mal nicht "sname" durchsuchen hab ich ja dann wieder ein Problem oder 8 Suchleisten oder so ^^
Verfasst: Freitag 18. Dezember 2009, 10:19
von Hyperion
Dann bau doch davor eine Auswahlbox, nach welchem Feld Du suchen möchtest!
Verfasst: Freitag 18. Dezember 2009, 10:50
von csc
Ne, das wir dann zu groß! Ich habe da
in meiner Admin.py und da jetzt rum zu basteln, dass es dann schön aussieht und nicht zu viel Platz weg nimmt im View (im mom ist es eine einfache kleine Suchbox) finde ich dann überflüssig. Kann ja in meiner Ansicht einfach auf die Spalte "SNAME" klicken und dann sortiert er mir die Ansicht nach dem neu Laden der Seite. Wollte nur ne kleine grafische Hilfestellung haben oder so. Dachte, dass search_field vll sowas tolles schon hat oder es einfach ist hinzu zu fügen.
Verfasst: Freitag 18. Dezember 2009, 10:55
von Hyperion
Ich verstehe Dein Problem immer noch nicht ganz... wenn Du nach einem Attribut suchen möchtest, dann muss Deine App ja auch wissen, nach welchem. Zaubern kann Django ja auch nicht...
Verfasst: Freitag 18. Dezember 2009, 11:02
von csc
Alles was in meinem "search_field" drin steht wird dann gesucht. Wenn ich ein Search_field mache wo nur ['sname'] drin steht kann er nur sname durchsuchen. Wenn ich da aber noch so wie ich ne multisuche mache und 3-4 andere Felder hinzufüge wie ['sname','fname','spitzname','Familienname'] dann sucht was ich eingebe in allen 4 Feldern. Wenn ich dann in dem Ergebnis was ich bekomme das gesuchte wort wenigstens markiert hätte oder so wäre ich schon glücklich. Aber er zeigt mir alle Ergebnisse aus SNAME FNAME SPITZNAME und FAMILIENNAME an ohne zu markieren, wo er genau der Wort gefunden hat.
Verfasst: Freitag 18. Dezember 2009, 11:11
von Hyperion
csc hat geschrieben:Aber er zeigt mir alle Ergebnisse aus SNAME FNAME SPITZNAME und FAMILIENNAME an ohne zu markieren, wo er genau der Wort gefunden hat.
Und genau das Problem hättest Du ja nicht, wenn Du nur nach einem Attribut suchen würdest und der Suchende das vorher festlegt.
Verfasst: Freitag 18. Dezember 2009, 11:12
von /me
csc hat geschrieben:Aber er zeigt mir alle Ergebnisse aus SNAME FNAME SPITZNAME und FAMILIENNAME an ohne zu markieren, wo er genau der Wort gefunden hat.
So ungefähr habe ich dein Problem jetzt verstanden obwohl ich immer noch schwer auseinander halten kann was "er" macht und was dein eigener Code ist. Du lässt anscheinend im Endeffekt auf SQL-Ebene so etwas generieren wie
Code: Alles auswählen
SELECT * From tabelle
WHERE
feld1 = 'wert' OR
feld2 = 'wert' OR
feld3 = 'wert'
Wenn du so ein Statement hast dann bekommst du eine Ergebnisliste, aber keine Details darüber in welchem Feld etwas gefunden wurde. Auf SQL-Ebene würden mir da Möglichkeiten einfallen das zu ändern, aber ich glaube nicht, dass das von Django aus über den ORM geht.
Du könntest aber natürlich Einzelsuchen auf die betroffenen Felder absetzen.
Verfasst: Freitag 18. Dezember 2009, 11:21
von csc
Ja, so arbeitet das "search_field" in django. Jedes weitere Attribut was ich search_field übergebe ist ein weiteres OR in der SQL suche.
Vorher sagen was genau er suchen soll geht schwer und sieht dann einfach nicht gut aus für den Benutzer. Wollte die kleine Searchbox auf der Seite jetzt nicht unnötig groß machen oder mit radiobuttons für eine spezielle Auswahlsuche versehen!
Nur den Wert aus den Tabellen den ich bekomme was hervorheben.
Verfasst: Freitag 18. Dezember 2009, 12:14
von /me
csc hat geschrieben:Nur den Wert aus den Tabellen den ich bekomme was hervorheben.
Unter "hervorheben" verstehe ich jetzt mal die Darstellung in HTML.
Wenn es jetzt nur darum geht, den Suchbegriff in der Ausgabe anders darzustellen dann lauf doch einfach über die auszugebenden Daten und ersetze vor der Ausgabe dein Suchwort 'value' mit '<strong>value</strong>' - oder optimalerweise mit '<span class="searchvalue">value</span> wobei die Klasse searchvalue dann im CSS passend deklariert ist.