Gor*_*ley 7 python django autocomplete django-queryset django-grappelli
我们有一个软删除方案,我们只是将事物标记为已删除,然后在各个地方过滤掉已删除的内容.我正试图弄清楚如何从grapeoli自动完成建议中过滤掉已删除的那些.
最后我跟着这个:
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()
Run Code Online (Sandbox Code Playgroud)
它可以通过覆盖相关的URL来安装:
url(r'^grappelli/lookup/autocomplete/$', YPAutocompleteLookup.as_view(), name="grp_autocomplete_lookup"),
Run Code Online (Sandbox Code Playgroud)
确保在你的网址中领先于Grappelli.
看起来您可以通过某种方式将额外的搜索参数传递到 ajax 自动完成器中。可能需要前端黑客。
https://github.com/sehmaschine/django-grappelli/blob/master/grappelli/views/lated.py#L101
您可以使模型的默认管理器返回已过滤的列表,并在需要显式查看已删除项目的地方删除该限制。
这可能会使默认情况对您来说更加容易。
| 归档时间: |
|
| 查看次数: |
1788 次 |
| 最近记录: |