Строка поиска в models.CharField, содержащая хоши Django
Я хотел узнать, есть ли способ вставить строку поиска в Django choices, то есть вместо ручного поиска различных вариантов, можно ли использовать строку фильтра для поиска нашего выбора в Django Admin - Models.
Ну, я думаю, что библиотека django-filter
предоставит вам, возможно, хорошие возможности для этого, я кратко привел несколько примеров из ее документации ниже:
Этот фильтр соответствует значениям в своем аргументе choices
. Аргумент choices
должен быть явно передан при объявлении фильтра на FilterSet
.
class User(models.Model):
username = models.CharField(max_length=255)
first_name = SubCharField(max_length=100)
last_name = SubSubCharField(max_length=100)
status = models.IntegerField(choices=STATUS_CHOICES, default=0)
STATUS_CHOICES = (
(0, 'Regular'),
(1, 'Manager'),
(2, 'Admin'),
)
class F(FilterSet):
status = ChoiceFilter(choices=STATUS_CHOICES)
class Meta:
model = User
fields = ['status']
То же, что и ChoiceFilter
с добавлением возможности преобразования значения для сопоставления. Это можно сделать с помощью параметра coerce. Пример использования - ограничение выбора булевых значений для сопоставления, так что только некоторые предопределенные строки могут быть использованы в качестве входных данных булевого фильтра:
import django_filters
from distutils.util import strtobool
BOOLEAN_CHOICES = (('false', 'False'), ('true', 'True'),)
class YourFilterSet(django_filters.FilterSet):
...
flag = django_filters.TypedChoiceFilter(choices=BOOLEAN_CHOICES,
coerce=strtobool)
То же самое, что и ChoiceFilter
, за исключением того, что пользователь может выбрать несколько вариантов, и фильтр по умолчанию будет формировать ИЛИ из этих вариантов для сопоставления элементов. Фильтр будет формировать И из выбранных вариантов, если этому классу передан аргумент conjoined=True
.
Множество вариантов выбора представлено в строке запроса повторным использованием одного и того же ключа с разными значениями (например, ''?status=Regular&status=Admin'').
Похож на MultipleChoiceFilter
, но дополнительно принимает параметр coerce
, как в TypedChoiceFilter
.
Refrence: