Есть ли какие-нибудь виджеты для `DurationField` в Django? - PullRequest
0 голосов
/ 08 марта 2019

Я собираюсь добавить виджет DurationField для сайта администратора и хочу виджет поля продолжительности для ввода.

Постановка задачи

Ниже PromoCodeкласс имеют DurationField, а именно duration.Но в админке он показывает TextInput в качестве ввода.

class PromoCode(models.Model):
    """
    Promo Code model to maintain offers
    """
    code = models.CharField(_("Code"), max_length=60, help_text="Promo code")
    # Validations and constraints for promo code
    start_date = models.DateField(_("Start date"), null=True, blank=True, help_text="Start date of promo code offer")
    end_date = models.DateField(_("End date"), null=True, blank=True, help_text="End date of promo code offer")
    duration = models.DurationField(_("Duration"), null=True, blank=True, help_text="Validity period of promo code")
    ...
    ...

admin.py

class PromoCodeAdmin(admin.ModelAdmin):
    """
    Model admin for promocodes
    """
    list_display = ('code', 'description', 'start_date', 'end_date',)
    fields = (
    'code', 'description', 'discount', 'start_date', 'end_date', 'duration', 'sitewide_countdown', 'user_countdown',
    'coin_currencies', 'fiat_currencies',)

Ниже изображение только для справки, duration поле не в удобочитаемом формате.

Reference image

Ожидаемое поведение

Каков наилучший способдобавить виджет DurationField в форму администратора, чтобы его было легко читать и редактировать?В настоящее время администратору довольно сложно добавить продолжительность времени.

1 Ответ

1 голос
/ 08 марта 2019

Вы можете использовать @pre_save в админке и преобразовать длительность в читаемый формат, который вы хотите.

...