Django 管理员默认自动完成过滤器不起作用
Django admin default autocomplete filter not working
Django 2.* 和 Django 3. 管理员默认自动完成字段不适用于过滤器。在 Django 修复此问题之前是否有任何临时修复?
“purchasingorders”是一个外国 key.if 从 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)
谢谢
我和你有同样的问题,我正在切换另一个库而不是使用默认的自动完成过滤器解决我的问题,这里是自动完成灯的库文档供您参考django autocomplete light
但我更喜欢基于默认自动完成过滤器的另一种解决方案,我提出的解决方案只是一个临时解决方案。如果有更好的解决方案,请在这里更新。
我决定选择 '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
Django 2.* 和 Django 3. 管理员默认自动完成字段不适用于过滤器。在 Django 修复此问题之前是否有任何临时修复?
“purchasingorders”是一个外国 key.if 从 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)
谢谢
我和你有同样的问题,我正在切换另一个库而不是使用默认的自动完成过滤器解决我的问题,这里是自动完成灯的库文档供您参考django autocomplete light
但我更喜欢基于默认自动完成过滤器的另一种解决方案,我提出的解决方案只是一个临时解决方案。如果有更好的解决方案,请在这里更新。
我决定选择 '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