Django AutoComplete在下拉列表中显示相关的外部详细信息

时间:2019-02-13 10:16:21

标签: django django-admin django-autocomplete-light

我是Django 2.0中自动完成的新手。

我可以使用它,但是在使用“自动完成”功能时,我似乎无法让django管理员更改label_from_instance。

有人知道如何修改autocomplete_fields标签吗?

通常没有自动完成功能,我的djangoadmin获取表单如下所示

/* Scrollbar*/
::-webkit-scrollbar {width: 0px;height: 0px;}
::-webkit-scrollbar-track {background: #f1f1f1;}
::-webkit-scrollbar-thumb {background: #888;}
::-webkit-scrollbar-thumb:hover {background: #555;}
/* Only Firefox 64 & + */
*{scrollbar-width: none!important;}
::selection { background: transparent; } 
::-moz-selection { background: transparent; }

如果我使用

   def get_form(self, request, obj=None, **kwargs):
        form = super(ChampProductMappingAdmin, self).get_form(request, obj, **kwargs)
        form.base_fields['sharepoint_product'].label_from_instance = lambda obj: "{} {}".format(obj.product_name,  obj.final_publications_product_id)

它仅使用标准对象(ID)标签

1 个答案:

答案 0 :(得分:0)

我试图实现同样的目标,但是在调查中,我看不到一种轻松实现此目标的方法。

由于是自动完成的,因此结果是通过AJAX加载的,而不是通过页面呈现的。 当您查看Django源代码的AJAX视图(https://github.com/django/django/blob/43f54e136e9282f5c0bfcf1169d0d59b3c365add/django/contrib/admin/views/autocomplete.py#L31)时,您会发现标签设置为str(obj),没有简单的方法来更改该行为。