Показывать название месяца вместо номера месяца (получено из дБ) в django поле выбора модели - PullRequest
1 голос
/ 23 апреля 2020

Столбец acct_per_num в таблице SAPAdjustment содержит номер месяца. Следующий код дает раскрывающийся список с уникальными номерами месяцев (1,2,3), присутствующими в столбце acct_per_num в таблице SAPAdjustment , но я хочу вместо названия месяца (январь, февраль, март) номера месяцев (1,2,3).

forms.py

class SAPReconForm(forms.Form):
    month = forms.ModelChoiceField(queryset=SAPAdjustment.objects.values_list('acct_per_num',flat=True).distinct(), empty_label=None)

models.py

class SAPAdjustment(models.Model):
    acct_per_num =  models.IntegerField( blank=True,null=True, verbose_name =_('Month'),help_text=_('Month'))

Я использую python 2,7 и django 1.6.7.

1 Ответ

1 голос
/ 23 апреля 2020

Используйте calendar module as,

import calendar

values = SAPAdjustment.objects.filter(acct_per_num__range=[1, 12]
                                      ).values_list('acct_per_num', flat=True
                                                    ).distinct().order_by('acct_per_num'
                                                                          )
month_choices = [(value, calendar.month_name[value]) for value in values]

from django import forms


class SAPReconForm(forms.Form):
    month = forms.ChoiceField(choices=month_choices)

Также используйте ChoiceField(...) вместо ModelChoiceField

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