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 тоже должны меняться.