【问题标题】:How to add bootstrap 4 datepicker in django如何在 django 中添加 bootstrap 4 datepicker
【发布时间】:2019-06-10 01:31:02
【问题描述】:

我一直在尝试从 tutorial 添加 bootstrap 4 datepicker。添加新记录时效果很好,但问题是在编辑记录时,该值没有出现在字段中。我所做的是:

widgets.py

from django.forms import DateTimeInput, DateInput

class BootstrapDateTimePickerInput(DateTimeInput):
    template_name = 'widgets/bootstrap_datetimepicker.html'

    def get_context(self, name, value, attrs):
        datetimepicker_id = 'datetimepicker_{name}'.format(name=name)
        if attrs is None:
            attrs = dict()
        attrs['data-target'] = '#{id}'.format(id=datetimepicker_id)
        attrs['class'] = 'form-control datetimepicker-input'
        context = super().get_context(name, value, attrs)
        context['widget']['datetimepicker_id'] = datetimepicker_id
        return context

forms.py

class ClaimForm(forms.ModelForm):

    purchase_date = forms.DateTimeField(input_formats=['%d/%m/%Y %H:%M'], widget=BootstrapDateTimePickerInput())

    class Meta(forms.ModelForm):
        model = Claim
        fields = ['store', 'expense', 'rewards', 'money_receipt', 'purchase_date']

我想在编辑表单时将日期值添加到输入字段中。

【问题讨论】:

    标签: django python-3.x bootstrap-4


    【解决方案1】:

    我们在 Tempus Dominus JS 库之上为 Bootstrap 4 日期和时间选择器小部件构建了一个 Django Python 包。详情在这里:

    https://pypi.org/project/django-tempus-dominus/

    对于你的情况,这样的事情会起作用:

    from tempus_dominus.widgets import DateTimePicker
    
    purchase_date = forms.DateTimeField(
        widget=DateTimePicker(),
        initial='1980-01-01 12:00:00',
    )
    

    祝你好运!

    【讨论】:

    • 感谢您的反馈,我刚刚安装了它。它可以工作,但我的问题没有解决,即当我编辑表单时,字段中没有出现现有值
    • 在表单字段中,您必须将模型中的现有值作为initial 传递。我会修改我的答案。
    猜你喜欢
    • 2018-09-21
    • 2023-03-06
    • 1970-01-01
    • 2019-03-05
    • 2019-05-05
    • 1970-01-01
    • 1970-01-01
    • 2015-03-24
    • 2018-06-12
    相关资源
    最近更新 更多