我将为管理站点添加DurationField
的小部件,并希望输入工期字段的小部件。
在PromoCode
类下面有DurationField
即duration
。但是在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
的小部件添加到管理表单中以使其易于阅读和编辑的最佳方法是什么?当前,管理员很难添加持续时间。
答案 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,
]