Задержка должна быть устранена в django для отношений M2M в раскрывающемся списке ModelAdmin.Python

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Задержка должна быть устранена в django для отношений M2M в раскрывающемся списке ModelAdmin.

Сообщение Anonymous »

У меня есть группа почтовых ящиков, которые необходимо заполнить на основе логина клиента и принадлежащих ему доменов. Клиент:Пользователь — отношения 1:1.
Проверено:
views.py:

Код: Выделить всё

class MailboxAutocomplete(autocomplete.Select2QuerySetView):
def get_queryset(self):
if not self.request.user.is_authenticated:
return Mailbox.objects.none()

qs = Mailbox.objects.all()
# Check if the user is in the 'customers' group
if self.request.user.groups.filter(name='customers').exists():
print('customer login in mailbox autocomplete view.......')
# Filter based on the customer's email
qs = qs.filter(domain__customer__email=self.request.user.email).only('email')

elif self.request.user.groups.filter(name__in=['resellers']).exists():
# Filter based on the reseller's email
qs = qs.filter(domain__customer__reseller__email=self.request.user.email).only('email')

if self.q:
# Further filter based on user input (e.g., email matching)
qs = qs.filter(email__icontains=self.q)
print(qs.values('email'))
return qs
в приложениях urls.py:
path('mailbox-autocomplete/',views.MailboxAutocomplete.as_view(), name='mailbox-autocomplete'),
]
в models.py:

Код: Выделить всё

class GroupMailIdsForm(forms.ModelForm):
class Meta:
model = GroupMailIds
fields = "__all__"

mailboxes = forms.ModelMultipleChoiceField(
queryset=Mailbox.objects.none(),
widget=autocomplete.ModelSelect2Multiple(url='mailmanager:mailbox-autocomplete')
)

def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
if self.instance.pk:  # Check if the instance is being updated
if self.request.user.groups.filter(name='customers').exists():
self.fields['mailboxes'].queryset = Mailbox.objects.filter(domain__customer__email=self.request.user.email)
elif self.request.user.groups.filter(name='resellers').exists():
self.fields['mailboxes'].queryset = Mailbox.objects.filter(domain__customer__reseller__email=self.request.user.email)
в admin.py:

Код: Выделить всё

class GroupMailIdsAdmin(ImportExportModelAdmin):
resource_class = GroupMailIdsResource
ordering = ('address',)
filter_horizontal = ('mailboxes',)
и в settings.py:

Код: Выделить всё

INSTALLED_APPS = [
'mailmanager.apps.MailmanagerConfig',
'admin_confirm',
'dal',
'dal_select2',
'django.contrib.admin',
'jquery',
]
with other required django apps.
  • Автозаполнение не работает.
  • Используется Django версии 4.2.
  • django-autocomplete-light==3.11.0
Есть ли что-то, чего мне не хватает. Я пытаюсь решить проблему задержки при загрузке около 200 тысяч почтовых ящиков в раскрывающемся списке.
Могу ли я получить точный код для решения этой проблемы? Мне нужно отобразить выбранные почтовые ящики, а также упростить выбор. Я плохо разбираюсь в js. Также попробовал filter_horizontal, который очень хорошо отображает, но вызывает задержку из-за огромного количества почтовых ящиков

Подробнее здесь: https://stackoverflow.com/questions/791 ... n-dropdown
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»