嘿,我正在使用calendarium,它与我通常使用的工作方式不同,所以如果在向表单添加小部件时遇到麻烦,我会有一点点。
EventCreatView中没有任何内容,所以我不知道为什么页面上有一个表单完全猜测它传递的args.which是下面的那个
class EventMixin(object):
"""Mixin to handle event-related functions."""
model = Event
fields = '__all__'
}
我试着添加这个:
class EventMixin(object):
"""Mixin to handle event-related functions."""
model = Event
fields = '__all__'
widgets = {
'start': model.DateTimeField(widget = AdminDateWidget)}
@method_decorator(permission_required('calendarium.add_event'))
def dispatch(self, request, *args, **kwargs):
return super(EventMixin, self).dispatch(request, *args, **kwargs)
class EventUpdateView(EventMixin, UpdateView):
"""View to update information of an event."""
pass
class EventCreateView(EventMixin, CreateView):
"""View to create an event."""
pass
我搞砸了它并且它似乎没有用,但我不知道我是否做了完全错误的事情。
非常感谢你的帮助,谢谢J
答案 0 :(得分:0)
这里至少有两个问题。
首先,widgets
是表单上的属性,而不是视图上的属性。与所有编辑视图一样,如果您没有指定模型,UpdateView会根据模型为您自动创建一个ModelForm。但由于您想要自定义它,您需要显式定义ModelForm并在其Meta类中使用widgets
属性。
其次,顾名思义,widgets
设置表单的小部件,而不是其字段。在您的情况下,您只需要widgets = {'start': AdminDateWidget}
。