2016-08-01 117 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'的文件 –

相關問題