Django中是否有可用于`DurationField`的小部件?

nx7onnlm  于 2023-06-25  发布在  Go
关注(0)|答案(2)|浏览(111)

我即将添加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字段不是人类可读的格式。*

预期行为

DurationField的小部件添加到管理表单中以使其易于阅读和编辑的最佳方法是什么?目前,管理员很难添加持续时间。

p8h8hvxi

p8h8hvxi1#

这似乎是你所需要的: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,
    ]
goqiplq2

goqiplq22#

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

相关问题