Django-filter package как динамически выводить значение выбора полей?

Я использую Django-filter, я жестко закодировал выбор полей модели:

models.py

MSG_TYPE_CHOICES = (
('success','success'),
('error','error'),
('warning','warning'),
)

class Mymodel(models.Model):
    typeLevel = models.CharField(max_length=50, blank=True, null=True,verbose_name='MSG TYPE',choices=MSG_TYPE_CHOICES)  # eg:exception

Обратите внимание: значение MSG_TYPE_CHOICES совпадает со значениями в typeLevel, это означает, что значения typeLevel следующие: успех, ошибка, предупреждение .

filter.py:

class MyFilter(django_filters.FilterSet):
    class Meta:
        model = Mymodel
        fields = ['typeLevel']

views.py:

def product_list(request):
    f = MyFilter(request.GET, queryset=Product.objects.all())
    return render(request, 'my_app/template.html', {'filter': f})

Шаблон:

<form method="get">
  {{ filter.form}}
</form>

Мой вопрос заключается в том, что вместо жесткого кодирования MSG_TYPE_CHOICES в models.py, есть ли способ получить эти значения динамически из модели, заполненной typeLevel, потому что мне нужно, чтобы значение MSG_TYPE_CHOICES всегда сохранялось одинаковым с полями typeLevel, если значение typeLevel меняется, то MSG_TYPE_CHOICES тоже должны меняться.

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