gpt4 book ai didi

python - 如何过滤 Django2 的 autocomplete_fields 中的选择?

转载 作者:太空狗 更新时间:2023-10-29 18:34:50 27 4
gpt4 key购买 nike

在 Django 2.0 中,autocomplete_fields已添加,这很棒。

没有 autocomplete_fields,我可以使用 formfield_for_foreignkey 更改 ForeignKeyField 的查询集.

但是将两者组合在一起是行不通的 - 自动完成选项列表看起来是动态的,并且来自不同的 url,而不是来自当前表单。

所以问题是——

如何更改自动完成小部件中的查询集?

最佳答案

如果您对“self”上的 ManyToManyField 使用 autocomplete_fields,此示例将排除当前对象。

通过覆盖 get_form 获取当前对象的 ID :

field_for_autocomplete = None

def get_form(self, request, obj=None, **kwargs):
if obj:
self.field_for_autocomplete = obj.pk

return super(MyAdmin, self).get_form(request, obj, **kwargs)

接下来,覆盖 get_search_results。仅为模型的自动完成 URI 修改查询集:

def get_search_results(self, request, queryset, search_term):
queryset, use_distinct = super().get_search_results(request, queryset, search_term)

# Exclude only for autocomplete
if request.path == '/admin/myapp/mymodel/autocomplete/':
queryset = queryset.exclude(field=self.field_for_autocomplete)

return queryset, use_distinct

关于python - 如何过滤 Django2 的 autocomplete_fields 中的选择?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48152908/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com