2016-08-01 115 views
2

我试图创建Calendarium自定义表单/视图和我不断收到一个错误我forms.py内模块”对象有没有属性‘SelectDateWidget’

AttributeError: 'module' object has no attribute 'SelectDateWidget' 

CreateEvent

class CreateEvent(forms.ModelForm): 
    class Meta: 
     model = Event 
     fields = ['title', 'start', 'end', 'description', 'category', 'created_by', 'rule', 'end_recurring_period'] 
     widgets = { 
      'start': forms.SelectDateWidget() 
     } 
views.py内

EventCreateView

class EventCreateView(EventMixin, CreateView): 
    form_class = CreateEvent 
    model = Event 

有谁知道为什么我得到这个错误

额外的(如果允许):

内EventCreateView其传递 “EventMixin” 它看起来像这样

class EventMixin(object): 
    """Mixin to handle event-related functions.""" 
    model = Event 
    fields = '__all__' 



    @method_decorator(permission_required('calendarium.add_event')) 
    def dispatch(self, request, *args, **kwargs): 
     return super(EventMixin, self).dispatch(request, *args, **kwargs) 

有人可以解释这样对我?

回答

1

the docs,你只能从django.forms在Django 1.9导入SelectDateWidget部件+。

在早期版本中,您需要从django.forms.extras.widgets导入它。

首先,添加进口:

from django.forms.extras.widgets import SelectDateWidget 

然后在你的形式改变widgets到:

widgets = { 
     'start': SelectDateWidget(), 
    } 
2

你缺少widgets

class CreateEvent(forms.ModelForm): 
    class Meta: 
     model = Event 
     fields = ['title', 'start', 'end', 'description', 'category', 'created_by', 'rule', 'end_recurring_period'] 
     widgets = { 
      'start': forms.widgets.SelectDateWidget() 
     } 
     #     ^^ 

在另一方面,我怀疑包含该代码段的文件被命名为forms.py

+0

虽然SelectDateWidget和其他人能够导入为forms.widgets.SelectDateWidget的forms.SelectDateWidget导入也起作用。 – e4c5

+1

@ e4c5当然。我开始认为OP在当前目录中的某个地方有一个名为'forms.py'的文件 –

相关问题