Я использовал 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
Как решить проблему задержки с помощью django M2M и filter_horizontal в панели ModelAdmin? ⇐ Python
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Как решить проблему задержки с помощью 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
-