Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

[django] jak zrobic search form?

0 views
Skip to first unread message

j

unread,
Apr 29, 2008, 12:03:19 PM4/29/08
to
Czesc,

W ramach nauki probuje zrobic prosta wyszukiwarke ludzi na podstawie ich
umiejetnosci. Chcialbym miec pole tekstowe gdzie np. moge pierwsze
litery nazwiska i checkboxy do zaznaczenia, wsrod ktorych moglbym wybrac
umiejetnosci, np. stolarz i spawacz.

Chcialbym tez generowac sobie liste checkboxow na podstawie listy
umiejetnosci w bazie.

Teraz pytanie: jak to zrobic? Mi sie wydaje, ze powinienem zrobic Form,
ktory w momencie tworzenia pobiera sobie liste umiejetnosci i dodaje sam
do siebie odpowienie pola BooleanField, tylko nie bardzo wiem jak to
zrobic, tzn. jak dodac pole do obiektu.

Poza tym jak ma sie sprawa z przekazywaniem wartosci takiego
'dogenerowanego' formularza dalej? Tzn. jak zaznacze sobie pare rzeczy,
dam 'search' to wypadaloby, zeby formularz nie zostal wyczyszczony.

Dzieki za wskazowki,
j

Tomasz Elendt

unread,
Apr 30, 2008, 5:43:52 PM4/30/08
to
j pisze:

> Czesc,
>
> W ramach nauki probuje zrobic prosta wyszukiwarke ludzi na podstawie ich
> umiejetnosci. Chcialbym miec pole tekstowe gdzie np. moge pierwsze
> litery nazwiska i checkboxy do zaznaczenia, wsrod ktorych moglbym wybrac
> umiejetnosci, np. stolarz i spawacz.

No dobrze. Rozumiem, że posiadasz pewną uniwersalną listę umiejętności,
i wiążesz ją z modelem pracownika relacją M2M.

Coś na wzór:

class Worker(models.Model):
# ...
skills = models.ManyToManyField(Skill)

> Chcialbym tez generowac sobie liste checkboxow na podstawie listy
> umiejetnosci w bazie.
>
> Teraz pytanie: jak to zrobic? Mi sie wydaje, ze powinienem zrobic Form,
> ktory w momencie tworzenia pobiera sobie liste umiejetnosci i dodaje sam
> do siebie odpowienie pola BooleanField, tylko nie bardzo wiem jak to
> zrobic, tzn. jak dodac pole do obiektu.

Bez sensu. Od tego jest MultipleChoiceField. Możesz też skorzystać z
niedawno dodanych dobrodziejstw queryset-refactor:

skills = forms.MultipleChoiceField(
widget=widgets.CheckboxSelectMultiple,
choices=Skill.objects.values_list('id', 'name')
)

> Poza tym jak ma sie sprawa z przekazywaniem wartosci takiego
> 'dogenerowanego' formularza dalej? Tzn. jak zaznacze sobie pare rzeczy,
> dam 'search' to wypadaloby, zeby formularz nie zostal wyczyszczony.

Jeśli zrobisz to w sposób podobny do zaproponowanego przeze mnie to nie
powinno być problemów. O ile oczywiście instancja formularza będzie 'bound'.

--
Eluś

0 new messages