CreateView 中的 DatepickerWidget

问题描述 投票:0回答:4

在我的模型中,我有一个日期字段。所以我想使用日期选择器。如何使用 Django-Admin 日期选择器?

我已经找到了在表单中执行此操作的示例,但我只设计了一个模型。 是否可以在我的模型中定义这个小部件?

django jquery-ui-datepicker django-class-based-views
4个回答
3
投票

您可以使用

get_form
方法来覆盖小部件属性:

class MyCreateView(CreateView):
    def get_form(self, form_class):
        form = super(MyCreateView, self).get_form(form_class)
        form.fields['date_field'].widget.attrs.update({'class': 'datepicker'})
        return form

2
投票

这是基于其他答案的完整、现代的解决方案:

from django.views.generic import CreateView
from django.contrib.admin.widgets import AdminDateWidget
from .models import MyModel

class MyModelCreateView(CreateView):
    template_name = 'form.html'
    model = MyModel
    fields = ['date_field', ...]

    def get_form(self, form_class=None):
        form = super(MyModelCreateView, self).get_form(form_class)
        form.fields['date_field'].widget = AdminDateWidget(attrs={'type': 'date'})
        return form

1
投票

我建议你创建一个模型, 在该表单文件中导入管理日期选择器小部件

from django.contrib.admin.widgets import AdminDateWidget

并使用 attrs=AdminDateWidget 定义该字段的小部件

并在模板中放入 {{ form.media }} 以在 html 中包含该小部件 javascript 和 css 文件


0
投票

@Adam 非常感谢你,我一直在寻找正确的解决方案。这很完美!

© www.soinside.com 2019 - 2024. All rights reserved.