Django管理员默认自动完成过滤器不起作用

问题描述

Django 2. *和Django 3. admin自动完成字段不适用于过滤器。在Django解决此问题之前,是否有任何临时修复程序?

“ purchaseingorders”是一个外键。如果从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 @R_502[email protected]_for_foreignkey(db_field,**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,search_term)
        if 'autocomplete' in request.path:
            branch_code = request.session['branch']
            queryset = queryset.filter(branch_code=branch_code)
        return queryset,use_distinct