Я хочу реализовать функцию, позволяющую пользователям выбирать других пользователей и добавлять их в поле «многие ко многим». Текущее состояние работает так, как я хочу, но я хочу иметь возможность отображать дополнительную информацию о пользователе, которого они выбирают, а не только его имя пользователя. Такие вещи, как first_name
, last_name
, информация о профиле и т. Д. - в идеале все это должно быть в одной строке, которую они видят при добавлении пользователя в свою очередь m2m, например:
John Smith | j.smith | j.smith@example.com
вместо:
j.smith
Я вижу элемент select2-results__option
, и мне любопытно, могу ли я просто переопределить его дополнительной информацией. Если есть чистый способ сделать это через django, я бы предпочел сделать это таким образом, но на самом деле открыт для всего.
Views.py
class UserAutocomplete(autocomplete.Select2QuerySetView):
def get_queryset(self):
if not self.request.user.is_authenticated:
return User.objects.none()
qs = User.objects.all()
if self.q:
qs = qs.filter(Q(username__icontains=self.q) |
Q(first_name__icontains=self.q) |
Q(last_name__icontains=self.q))
return qs
forms.py
class UserSurveyQueueForm(forms.ModelForm):
def __init__(self, *args, **kwargs):
user = kwargs.pop('user')
super().__init__(*args, **kwargs)
self.fields['queue'].queryset = User.objects.all().exclude(pk=user)
self.fields['queue'].required = False
class Meta:
model = UserSurveyQueue
fields = ('queue',)
widgets = {
'queue': autocomplete.ModelSelect2Multiple(
url='user-autocomplete',
),
}