Фильтры Django - отличительные значения ModelChoiceFilter от поля - PullRequest
0 голосов
/ 12 марта 2019

Я пытаюсь получить список различных вариантов из моего поля msg_direction, заполненного в моей форме.При выборе и GET применяется фильтр, и страница обновляется с отфильтрованными данными.Код работает до того момента, когда я делаю выбор, где я получаю следующую ошибку проверки, используя ModelChoiceFilter: * Выберите правильный выбор.Этот вариант не является одним из доступных.

Вот определение поля в моей модели:

msg_direction = models.CharField(max_length=20)

Вот определение фильтра в моем файле filters.py:

msg_direction = ModelChoiceFilter(queryset=Message.objects.
                                 values_list('msg_direction',
                                 flat=True).distinct().order_by())

Я также попытался ChoiceFilter вместо этого, но лучше работать с динамически генерируемым списком из этого поля, а не указывать фиксированный список вариантов.

Заранее спасибо!

1 Ответ

0 голосов
/ 12 марта 2019

Спасибо за разъяснения, Диркгротен! Вот что я придумала:

def get_choices(model, field):
    choices = []
    for k in model.objects.values_list(field).distinct():
        choices.append((k[0], k[0]))
    return choices

msg_direction = ChoiceFilter(choices=get_choices(Message, 'msg_direction'))

Есть еще какие-нибудь рекомендации по эффективности?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...