我无法为日期时间字段配置夹层内联编辑。
我在页面中有一个类似这样的字段(如http://mezzanine.jupo.org/docs/inline-editing.html)
{% editable page.project.start %}
{{ page.project.start|date:'Y M'}}
{% endeditable %}
但是,该小部件仅显示9个未来年份(如https://docs.djangoproject.com/en/2.1/ref/forms/widgets/#selectdatewidget所示),因此无法输入过去的任何日期。
我需要为该小部件设置years
属性,但是,由于它是由Mezzanine自动生成的,因此我没有任何直接访问权限。如何通过夹层嵌入式编辑代码为Django小部件设置参数?
答案 0 :(得分:3)
我认为没有简单的方法可以做到这一点,但这是一种可能有用的方法。
Mezzanine寻找FORMS_EXTRA_WIDGETS
设置,可用于定义自定义窗口小部件。 from the code是最好的了解方式。
此处定义的小部件用于呈现内联编辑器表单,因此您应该能够提供自己的小部件。无法为小部件提供初始化参数,因此您需要将默认的SelectDateWidget
子类化并覆盖其__init__
方法,例如:
class CustomSelectDateWidget(SelectDateWidget):
def __init__(self, attrs=None, years=None, months=None, empty_label=None):
years = [2017, 2018, 2019] # Provide your list of years here
super().__init__(attrs, years, months, empty_label)
然后将此自定义窗口小部件传递给设置:
from mezzanine.forms.fields import DATE
FORMS_EXTRA_WIDGETS = [
(DATE, 'dotted.path.to.CustomSelectDateWidget')
]
很明显,这将替换夹层呈现的所有表单上所有日期字段的小部件使用。如果不重写很多内联编辑器逻辑,我看不出有专门针对一个领域的任何方法。