#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