我们有一个软删除方案,我们只是将内容标记为已删除,然后在不同的地方过滤掉已删除的内容。我正在尝试弄清楚如何从 grapelli 自动完成建议中过滤掉已删除的建议。
最佳答案
最后我选择了这个:
from grappelli.views.related import AutocompleteLookup
class YPAutocompleteLookup(AutocompleteLookup):
""" patch grappelli's autocomplete to let us control the queryset
by creating a autocomplete_queryset function on the model """
def get_queryset(self):
if hasattr(self.model, "autocomplete_queryset"):
qs = self.model.autocomplete_queryset()
else:
qs = self.model._default_manager.all()
qs = self.get_filtered_queryset(qs)
qs = self.get_searched_queryset(qs)
return qs.distinct()
它可以通过覆盖相关的 url 安装:
url(r'^grappelli/lookup/autocomplete/$', YPAutocompleteLookup.as_view(), name="grp_autocomplete_lookup"),
确保这在您的网址中位于 Grappelli 之前。
关于python - 如何过滤 django grappelli 中的自动完成结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17852308/