Есть ли возможность запретить отображение некоторых значений в виджете автозаполнения django? - PullRequest
0 голосов
/ 19 августа 2011

Я использую django-autocomplete в моем «редактировании представления данных пользователя» для добавления «друзей»

django-autocomplete отлично работает, но отображает также «текущего пользователя» (который редактирует его профиль) иuser "anonymous"

Я хочу исключить эти два.

Как мне это сделать?


models.py

class Profile(UserenaLanguageBaseProfile):
    friends = models.ManyToManyField(User,related_name='userfriends', blank=True, null=True)

forms.py

class EditProfileForm(forms.ModelForm):
class Meta:
        widgets = {
            'friends': MultipleAutocompleteWidget(Profile.friends),
        }

1 Ответ

0 голосов
/ 20 августа 2011

Это не полный ответ, но вы должны сделать что-то вроде этого:

autocomplete = AutocompleteView()

class ProfileAutocomplete(AutocompleteSettings):
    queryset = Profile.objects.exclude(friends='anonymous')

    autocomplete.register(Profile.friends, UserAutocomplete)

Но это не исключает текущего пользователя. Чтобы получить это, вы должны переопределить / расширить метод view вашего класса ProfileAutocomplete. В этом методе вам необходимо получить идентификатор пользователя (вероятно, из сеанса), а затем исключить его из набора запросов. Если сессия не работает (возможно, я не уделил ей много времени), вам, вероятно, придется изменить скрипт jquery_autocomplete.js, чтобы передать пользователя методу view.

...