将小部件添加到由模型生成的表单中

时间:2016-07-29 09:28:08

标签: python django

嘿,我正在使用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

1 个答案:

答案 0 :(得分:0)

这里至少有两个问题。

首先,widgets是表单上的属性,而不是视图上的属性。与所有编辑视图一样,如果您没有指定模型,UpdateView会根据模型为您自动创建一个ModelForm。但由于您想要自定义它,您需要显式定义ModelForm并在其Meta类中使用widgets属性。

其次,顾名思义,widgets设置表单的小部件,而不是其字段。在您的情况下,您只需要widgets = {'start': AdminDateWidget}