Я использовал django ModelAdmin с отношениями M2M и кодом фильтрации полей формы следующим образом:
Но для суперпользователя или любого другого входа в систему, где количество почтовых ящиков превышает 100 тысяч. Я нарезал доступные после фильтрации. Но загрузка поля m2m требует времени и времени для входа в систему суперпользователя:
def formfield_for_manytomany(self, db_field, request, **kwargs):
if db_field.name == "mailboxes":
if request.user.is_superuser:
queryset = Mailbox.objects.prefetch_related('domain').only('id','email')
kwargs["queryset"] = queryset
field = super().formfield_for_manytomany(db_field, request, **kwargs)
field.widget.choices.queryset = queryset # Limit visible options
return field
if request.user.groups.filter(name__in=['customers']).exists():
queryset = Mailbox.objects.filter(
domain__customer__email=request.user.email).prefetch_related('domain').only('id','email')
kwargs["queryset"] = queryset
field = super().formfield_for_manytomany(db_field, request, **kwargs)
field.widget.choices.queryset = queryset
return field
return super().formfield_for_manytomany(db_field, request, **kwargs)
Я хочу использовать только filter_horizontal, а не django auto_complete_light или какой-либо JavaScript. как можно устранить задержку.
Как видите, фильтрация набора запросов уже выполнена для получения допустимых параметров.
Срез удален
модель почтового ящика проста:< /p>
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)
который имеет отношение M2M к модели GroupMailIds:
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
Как решить проблему задержки с помощью django M2M и filter_horizontal в панели ModelAdmin? ⇐ Python
Программы на Python
1732486487
Anonymous
Я использовал django ModelAdmin с отношениями M2M и кодом фильтрации полей формы следующим образом:
Но для суперпользователя или любого другого входа в систему, где количество почтовых ящиков превышает 100 тысяч. Я нарезал доступные после фильтрации. Но загрузка поля m2m требует времени и времени для входа в систему суперпользователя:
def formfield_for_manytomany(self, db_field, request, **kwargs):
if db_field.name == "mailboxes":
if request.user.is_superuser:
queryset = Mailbox.objects.prefetch_related('domain').only('id','email')
kwargs["queryset"] = queryset
field = super().formfield_for_manytomany(db_field, request, **kwargs)
field.widget.choices.queryset = queryset # Limit visible options
return field
if request.user.groups.filter(name__in=['customers']).exists():
queryset = Mailbox.objects.filter(
domain__customer__email=request.user.email).prefetch_related('domain').only('id','email')
kwargs["queryset"] = queryset
field = super().formfield_for_manytomany(db_field, request, **kwargs)
field.widget.choices.queryset = queryset
return field
return super().formfield_for_manytomany(db_field, request, **kwargs)
Я хочу использовать только filter_horizontal, а не django auto_complete_light или какой-либо JavaScript. как можно устранить задержку.
Как видите, фильтрация набора запросов уже выполнена для получения допустимых параметров.
Срез удален
модель почтового ящика проста:< /p>
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)
который имеет отношение M2M к модели GroupMailIds:
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')
Подробнее здесь: [url]https://stackoverflow.com/questions/79191769/how-to-resolve-latency-issue-with-django-m2m-and-filter-horizontal-in-modeladmin[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия