问题描述
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