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
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ś