Фильтр автозаполнения Django admin по умолчанию не работает

#django #django-3.0

#django #django-3.0

Вопрос:

Django 2. * amp; Django 3. поле автозаполнения администратора по умолчанию не работает с фильтром. Есть ли какое-либо временное исправление, пока Django не исправит эту проблему?

«purchasingorders» — это внешний ключ.если удалить из autocomplete_fields, он работает нормально. функция formfield_for_foreignkey не работает с autocomplete_fields

 class GoodReceivedNoteAdmin(admin.ModelAdmin):
    autocomplete_fields = ['purchasingorders']
 
    def formfield_for_foreignkey(self, db_field, request, **kwargs):
       if db_field.name == "purchasingorders":
          branch_code = request.session['branch']
          kwargs["queryset"] = PurchasingOrders.objects.filter(branch_code=branch_code)
          return super().formfield_for_foreignkey(db_field, request, **kwargs)
  

Спасибо

Комментарии:

1. фильтр автозаполнения Django по умолчанию ? Можете ли вы добавить какую-нибудь ссылку?

2. Код также обновлен

Ответ №1:

У меня такая же проблема, как и у вас, я переключаю другую библиотеку вместо использования фильтра автозаполнения по умолчанию. устраните мою проблему, вот документы библиотеки autocomplete light для вашей справки django autocomplete light

Но я предпочитаю другое решение, основанное на фильтре автозаполнения по умолчанию, решение, которое я предлагаю, просто временное решение. Обновите здесь, если есть решение получше.

Ответ №2:

Я решил использовать ‘get_search_results’.

 class PurchasingOrdersAdmin(admin.ModelAdmin):
    def get_search_results(self, request, queryset, search_term):
        queryset, use_distinct = super().get_search_results(request, queryset, search_term)
        if 'autocomplete' in request.path:
            branch_code = request.session['branch']
            queryset = queryset.filter(branch_code=branch_code)
        return queryset, use_distinct