2017-03-23 18 views
0

私はテキストフィールドを持つモデルを持っています Django-Autocompleteでフォームを追加して、このフィールドに使用できるオブジェクトを取得しました。このモデルの管理ページで管理者のModelChoiceFieldに対するテキスト参照でエラーが発生する

、私は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',) 
) 

答えて

0

カスタムGET_SEARCH_RESULTSを使用してsearch_fieldsを変更しても、他のフィールドを使用するために必要な/リストは、結果

#admin.py 
class SomeModelAdmin(admin.ModelAdmin): 
    form = SomeModelForm 
    search_fields = [] 
    def get_search_results(self, request, queryset, search_term): 
     new_queryset, use_distinct = super(SomeModelAdmin, self).\ 
     get_search_results(request, queryset, search_term) 
     new_queryset |= 
      queryset.filter(SomeOtherModel__name__icontains=search_term) 
     return new_queryset, use_distinct 

similar question

関連する問題