モデルの__unicode__メソッドをsearch_fieldsタプルに含める方法はありますか? この値は他のいくつかのモデルに依存するため、モデルに__unicode__の結果を格納するための特別なフィールドを作成したくありません...
2 に答える
いいえ、できません。search_fields
タプルに記載されているフィールドは SQL クエリの作成に使用されるためです。
https://github.com/django/django/blob/master/django/contrib/admin/views/main.py行 349-370 を見てください
アップデート。別のフィールドを作成して、__unicode__
そこにメソッドの値を格納できます。おそらく醜く非効率的に見えますが、これによりデータベース列をフィルタリングできます。メソッドがどのように見えるか詳細を教えてください__unicode__
。
UPD2あなたのunicode
方法:
def __unicode__(self):
return "%s%s%s%s-%s%s" % (
self.factory.republic.code.upper(),
self.factory.location.region and self.factory.location.region.code or '00',
self.factory.location.code,
self.factory.code,
self.kind.code,
self.code
)
Djangosearch_fields
は彼の ORM メソッドを操作するため、実行できない場合
は管理者で実行Catalog.objects.filter(**lookup_queries)
できません。search_fields
不運にも。
あなたunicode
の方法は、6つのテーブルの結合とその他のプログラムロジックで非常に具体的です。このフィールドの検索は SQL 言語では複雑になり、インデックスは使用されません。結果を db 列に保存し、関連するフィールドが更新されたときに更新してみてください。
ねえ、最近似たようなものが必要でした。この回答 で説明されているようsearch_fields
に、プロパティではなく、データベース内の列を表す属性でのみ機能します。
ただし、__unicode__
関数が [フィールド内] に依存している場合、他のいくつかのモデルがこの他の回答を見て
、Django クエリセットで行うのと同じ方法で、管理者の search_fields で関連するフィールド検索を指定する方法を説明しています。