Как решить проблему задержки с помощью django M2M и filter_horizontal в панели ModelAdmin?Python

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

Сообщение Anonymous »

Я использовал django ModelAdmin с отношениями M2M и кодом фильтрации полей формы следующим образом:
Но для суперпользователя или любого другого входа в систему, где количество почтовых ящиков превышает 1 лакх, я вырезал доступные после фильтрации. Но загрузка поля m2m требует времени и времени для входа в систему суперпользователя:
def formfield_for_manytomany(self, db_field, request, **kwargs):
if db_field.name == "mailboxes":
if request.user.is_superuser:
queryset = Mailbox.objects.all().only('id','email')
kwargs["queryset"] = queryset
field = super().formfield_for_manytomany(db_field, request, **kwargs)
field.widget.choices.queryset = queryset[:300] # Limit visible options
return field

if request.user.groups.filter(name__in=['customers']).exists():
queryset = Mailbox.objects.only('id', 'email').filter(
domain__customer__email=request.user.email
)
kwargs["queryset"] = queryset
field = super().formfield_for_manytomany(db_field, request, **kwargs)
field.widget.choices.queryset = queryset[:500] # Limit visible options
return field
return super().formfield_for_manytomany(db_field, request, **kwargs)

Я хочу использовать только filter_horizontal, а не django auto_complete_light или какой-либо javascript. Как можно устранить задержку?
Как вы можете видеть, фильтрация набора запросов уже выполнена для получения допустимых параметров. а затем нарезано.
модель почтового ящика проста:
class Mailbox(AbstractPerson):
username = models.EmailField(verbose_name='email', blank=True)
email = models.EmailField(verbose_name='email', null=True,blank=True, unique=True)
local_part = models.CharField(max_length=100,verbose_name='user part',help_text=hlocal_part)
domain = models.ForeignKey(Domain, on_delete=models.CASCADE)

which has M2M relation with GroupMailIds model:

class GroupMailIds(models.Model):
local_part = models.CharField(max_length=100,verbose_name='local part',help_text=hlocal_part)
address = models.EmailField(unique=True,verbose_name='Email id of the distribution list')
domain = models.ForeignKey(Domain, on_delete=models.CASCADE,related_name='domains')
mailboxes = models.ManyToManyField(Mailbox,related_name='my_mailboxes')


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

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Как решить проблему задержки с помощью django M2M и filter_horizontal в панели ModelAdmin?
    Anonymous » » в форуме Python
    0 Ответы
    15 Просмотры
    Последнее сообщение Anonymous
  • Как решить проблему задержки с помощью django M2M и filter_horizontal в панели ModelAdmin?
    Anonymous » » в форуме Python
    0 Ответы
    12 Просмотры
    Последнее сообщение Anonymous
  • Как решить проблему задержки с помощью django M2M и filter_horizontal в панели ModelAdmin?
    Anonymous » » в форуме Python
    0 Ответы
    16 Просмотры
    Последнее сообщение Anonymous
  • Как решить проблему задержки с помощью django M2M и filter_horizontal в панели ModelAdmin?
    Anonymous » » в форуме Python
    0 Ответы
    29 Просмотры
    Последнее сообщение Anonymous
  • Как решить проблему задержки с помощью django M2M и filter_horizontal в панели ModelAdmin?
    Anonymous » » в форуме Python
    0 Ответы
    12 Просмотры
    Последнее сообщение Anonymous

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