wagtail的后台日期选择器
时间: 2023-07-08 09:30:34 浏览: 47
Wagtail后台的日期选择器也可以使用Django内置的DateInput小部件来实现。可以通过在模型表单中的字段定义中指定widget属性来使用它。例如,在一个Wagtail页面模型表单中定义一个日期字段:
```python
from django import forms
from wagtail.admin.edit_handlers import FieldPanel
from wagtail.core.models import Page
class MyPage(Page):
my_date_field = models.DateField()
content_panels = Page.content_panels + [
FieldPanel('my_date_field', widget=forms.DateInput(attrs={'type': 'date'})),
]
```
在这个例子中,我们在Wagtail页面模型`MyPage`中定义了一个日期字段`my_date_field`,并在`content_panels`中为它添加了一个`FieldPanel`,并在`FieldPanel`的参数中指定了widget属性。和前面的例子一样,我们使用`forms.DateInput`小部件,并使用`attrs`参数来指定HTML属性。在这个例子中,我们指定了输入类型为日期(`type=date`),这将在支持HTML5的浏览器中显示日期选择器。
相关问题
wagtail 侧面顶部过滤器名称怎么改名
要更改Wagtail侧面顶部过滤器的名称,您需要重写Wagtail的默认模板。您可以按照以下步骤进行操作:
1. 在您的应用程序中创建一个名为“templates/wagtailadmin/pages/filters.html”的文件夹和文件。
2. 将Wagtail默认模板的内容复制到该文件中。
3. 找到您要更改名称的过滤器的HTML标记,并将其更改为您想要的名称。
4. 保存文件并重新启动服务器以查看更改的效果。
请注意,如果您使用了Wagtail的多语言支持功能,则需要为每种语言重写过滤器模板。
wagtail中list_filter过滤器中的日期字段如何改为可以选择年月的
默认情况下,wagtail中的list_filter过滤器中的日期字段只能按照年月日进行筛选。如果你想要将其改为可以选择年月的方式进行筛选,可以按照以下步骤进行操作:
1. 创建一个自定义的过滤器类,继承自`wagtail.contrib.modeladmin.filters.DateRangePickerWidget`类,并重写`render_template`方法,指定自定义的模板文件。
```python
from django.template.loader import render_to_string
from wagtail.contrib.modeladmin.filters import DateRangePickerWidget
class YearMonthPickerWidget(DateRangePickerWidget):
def render_template(self, name, value, attrs=None, renderer=None):
template_name = 'admin/year_month_picker.html'
context = {'widget': self, 'name': name, 'value': value, 'attrs': attrs}
return render_to_string(template_name, context)
```
2. 创建一个自定义的模板文件`year_month_picker.html`,其中包含一个`select`标签,用于选择年月。
```html
{% load wagtailcore_tags %}
{% load wagtailadmin_tags %}
{% include "wagtailadmin/widgets/date_range_picker.html" %}
{% block extra_widget %}
<div class="field-inner">
<label for="{{ widget.attrs.id }}_year_month">Year Month:</label>
<select id="{{ widget.attrs.id }}_year_month" name="{{ widget.attrs.name }}_year_month">
{% for year in widget.years %}
{% for month in widget.months %}
<option value="{{ year }}-{{ month }}" {% if year == widget.year and month == widget.month %}selected{% endif %}>
{{ month_name|get_item:month }} {{ year }}
</option>
{% endfor %}
{% endfor %}
</select>
</div>
{% endblock %}
```
3. 在list_filter中使用自定义的过滤器类。
```python
from django.contrib import admin
from myapp.models import MyModel
from myapp.filters import YearMonthPickerWidget
class MyModelAdmin(admin.ModelAdmin):
list_filter = (
('created_at', YearMonthPickerWidget),
)
admin.site.register(MyModel, MyModelAdmin)
```
这样,就可以在wagtail的后台管理界面中,使用自定义的过滤器类对日期字段进行按年月的筛选了。