Django中的“ DurationField”有可用的小部件吗?

时间:2019-03-08 14:17:06

标签: django django-admin django-widget

我将为管理站点添加DurationField的小部件,并希望输入工期字段的小部件。

问题陈述

PromoCode类下面有DurationFieldduration。但是在admin中,它显示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的小部件添加到管理表单中以使其易于阅读和编辑的最佳方法是什么?当前,管理员很难添加持续时间。

2 个答案:

答案 0 :(得分:1)

您可以在管理员中使用@pre_save并将持续时间转换为所需的可读格式。

答案 1 :(得分:0)

这似乎是您需要的:http://www.columbia.edu/~njn2118/journal/2015/10/30.html

我只想补充一点,您需要在管理类中设置自定义表单。

喜欢:

from .forms import ModelFormWithDurationWidget

class SnippetAdmin(admin.ModelAdmin):
    save_as = True
    prepopulated_fields = {'slug': ('name',)}
    form = ModelFormWithDurationWidget
    inlines = [
    SliderInline,
    ]