django 管理者の検索バーで、列 = fruit_name のモデルがあり、その列を検索して、すべてのバナナとリンゴを表示する fruit_name = バナナまたはリンゴのいずれかのインスタンスを検索したい場合、どうすればそれを行うことができますか?
5252 次
3 に答える
2
admin.py ファイルで、モデルの表示をカスタマイズできます。
class YourModelAdmin(admin.ModelAdmin):
list_display = ('id_proveedor','anio','mes','fecha','fecha_mod','contacto','usuario','obs')
list_display_links = ('id_proveedor','anio','mes','fecha','fecha_mod','contacto','usuario','obs')
list_filter = ('id_proveedor','anio','mes')
ordering = ['id_proveedor']
search_fields = ('id_proveedor','anio','mes','contacot')
list_per_page = 10
admin.site.register(YourModel, YourModelAdmin)
検索するフィールド、表示するフィールド、順序などをカスタマイズできます。
管理ページに関するドキュメントを確認してください
于 2015-01-22T23:44:12.290 に答える
1
私の場合、@catavaran の回答を使用すると、こちらで質問されているようにフィルターが壊れます。次の回避策を思いつきました。
from operator import or_
from django.db.models import Q
class MyAdmin(admin.ModelAdmin):
...
def get_search_results(self, request, queryset, search_term):
orig_queryset = queryset
queryset, use_distinct = super(MyAdmin, self).get_search_results(
request, queryset, search_term)
search_words = search_term.split()
if search_words:
q_objects = [Q(**{field + '__icontains': word})
for field in self.search_fields
for word in search_words]
queryset |= self.model.objects.filter(reduce(or_, q_objects))
queryset = queryset & orig_queryset
return queryset, use_distinct
これにより、使用時に ant の以前のフィルタリングがオーバーライドされないことが保証されますqueryset |= self.model.objects.filter(reduce(or_, q_objects))
。一方、 を使用するorig_queryset
と、選択したフィルターも確実に適用されます。
于 2021-09-14T01:02:36.217 に答える