Estoy tratando de implementar auocomplete en mi proyecto Django.
Quiero pasar un parámetro a través de la url en el formulario. Este es mi formulario
class SongForm(forms.ModelForm): song_title = forms.ModelChoiceField( queryset=Snr.objects.all(), widget=autocomplete.ModelSelect2(url='login:song-autocomplete',attrs={'data-placeholder': 'Autocomplete ...', 'data-minimum-input-length': 3,},) ) class Meta: model = Song fields = ['song_title']mi patrón de URL es
url(r'^(?P<playlist_id>[0-9]+)/create_song/song-autocomplete/$', views.SongAutocomplete.as_view(), name='song-autocomplete', ),así que al llamar a la url song-autocompletar necesita un parámetro playist_id. ¿Cómo lo envío usando url='login:song-autocomplete'?
Gracias.
ejemplo completo usando mi propio código:
formularios.py
class AddRelationshipForm(autocomplete.FutureModelForm): first = autocomplete.QuerySetSequenceModelField( queryset=autocomplete.QuerySetSequence(Person.objects.all()), required=False, widget=autocomplete.QuerySetSequenceSelect2( url='PersonAutoUrl', attrs={ 'style':'width:15em;', 'data-placeholder': 'find' } ), ) def __init__(self, *args, **kwargs): type = kwargs.pop('type') super(AddRelationshipForm, self).__init__(*args, **kwargs) self.fields['first'] = autocomplete.QuerySetSequenceModelField( queryset=autocomplete.QuerySetSequence(Person.objects.all()), required=False, widget=autocomplete.QuerySetSequenceSelect2( url='PersonAutoUrl/'+type, attrs={ 'style':'width:15em;', 'data-placeholder': 'search' } ), ) class Meta: model = Relation fields = ('first',)urls.py
url( '^relationships/RelationshipAutoUrl/(?P<type>\w+)/$', RelationshipAutoView.as_view(), name='PersonAutoUrl', ),vistas.py
class RelationshipAutoView(Select2QuerySetSequenceView): def get_queryset(self): excluded = Person.objects.filter(first__owner=self.request.user, first__type=self.kwargs['type']) queries = Person.objects.exclude(id__in=excluded) if self.q: queries = queries.filter(first_name__icontains=self.q) return queriesiniciando la forma y pasando el tipo kwarg a la vista:
def relationships(request): relationships = ['Friend', 'Family','Business'] forms = {} for key in relationships: forms[key] = AddRelationshipForm(request.POST or None, prefix='new'+key, type=key)