Строка поиска в models.CharField, содержащая хоши Django

Я хотел узнать, есть ли способ вставить строку поиска в Django choices, то есть вместо ручного поиска различных вариантов, можно ли использовать строку фильтра для поиска нашего выбора в Django Admin - Models.

Ну, я думаю, что библиотека django-filter предоставит вам, возможно, хорошие возможности для этого, я кратко привел несколько примеров из ее документации ниже:

ChoiceFilter

Этот фильтр соответствует значениям в своем аргументе 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']

TypedChoiceFilter

То же, что и 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)

MultipleChoiceFilter

То же самое, что и ChoiceFilter, за исключением того, что пользователь может выбрать несколько вариантов, и фильтр по умолчанию будет формировать ИЛИ из этих вариантов для сопоставления элементов. Фильтр будет формировать И из выбранных вариантов, если этому классу передан аргумент conjoined=True.

Множество вариантов выбора представлено в строке запроса повторным использованием одного и того же ключа с разными значениями (например, ''?status=Regular&status=Admin'').


TypedMultipleChoiceFilter

Похож на MultipleChoiceFilter, но дополнительно принимает параметр coerce, как в TypedChoiceFilter.


Refrence:

Вернуться на верх