在Admin上对ModelChoiceField执行文本查找会收到错误

时间:2017-03-23 10:20:44

标签: django django-autocomplete-light

我的模型有一个文本字段 我添加了一个带有Django-Autocomplete的表单来获取该字段的可用对象。

在此模型的管理页面中,我想使用my_field字段搜索对象,但我收到错误"相关字段无效查找:icontains"

我知道我得到它是因为表单的字段现在是ModelChoiceField,如何根据SomeOtherModel的名称字段修复它?

from dal import autocomplete
import django.forms as forms
from django.db import models

# models.py
class SomeModel(models.Model):
     some_other_model = models.ForeignKey('SomeOtherModel', )

class SomeOtherModel(models.Model):
     name = models.CharField(max_length=255)

#admin.py
class SomeModelAdmin(admin.ModelAdmin):
     form = SomeModelForm
     search_fields = ['some_other_model__name', ]

#form.py
class SomeModelForm(ModelForm):
    some_other_model = forms.ModelChoiceField(
         queryset=SomeOtherModel.objects.all(),
         widget=autocomplete.ModelSelect2(url='control:someothermodel-autocomplete', )
)

1 个答案:

答案 0 :(得分:0)

需要使用自定义get_search_results更改search_fields并使用其他字段/列表结果

function palindrome(str) {
    var clearString = str.toLowerCase().replace(/[^0-9a-z]/gi, '').split('');

    for (var i = 0; i < clearString.length/2; i++) {
        if (clearString[i] !== clearString[clearString.length -1 -i]) {  
            return false;
        } 
    }
    return true;
}

similar question