2015-02-06 3 views
0

Я создал вид MyView (CreateView) и модель и форму и получите ошибку:AttributeError: объект типа «MyModel» не имеет атрибута «_meta»

AttributeError: type object 'MyModel' has no attribute '_meta' 

Вот мое мнение:

class MyView(CreateView): 
    model = MyModel 
    template_name = "myapp/template1.html" 

Вот моя модель:

class MyModel(models.Model): 
    free_day = models.CharField(max_length=255) 
    name = models.CharField(max_length=255, blank=True, null=True) 

    class Meta: 
     verbose_name = _('MyModel') 
     verbose_name_plural = _('MyModels') 

    def __unicode__(self): 
     return self.free_day 

Моя форма:

class MyInputForm(forms.ModelForm): 

    class Meta: 
     model = MyModel 
     fields = ('user', 'free_day',) 

Вот мой отслеживающий

Internal Server Error: /freedays/addvacation/ 
Traceback (most recent call last): 
    File "/home/mariusz/.virtualenvs/urlop/local/lib/python2.7/site-packages/django/core/handlers/base.py", line 111, in get_response 
    response = wrapped_callback(request, *callback_args, **callback_kwargs) 
    File "/home/mariusz/.virtualenvs/urlop/local/lib/python2.7/site-packages/django/db/transaction.py", line 394, in inner 
    return func(*args, **kwargs) 
    File "/home/mariusz/.virtualenvs/urlop/local/lib/python2.7/site-packages/django/views/generic/base.py", line 69, in view 
    return self.dispatch(request, *args, **kwargs) 
    File "/home/mariusz/.virtualenvs/urlop/local/lib/python2.7/site-packages/django/views/generic/base.py", line 87, in dispatch 
    return handler(request, *args, **kwargs) 
    File "/home/mariusz/.virtualenvs/urlop/local/lib/python2.7/site-packages/django/views/generic/edit.py", line 203, in get 
    return super(BaseCreateView, self).get(request, *args, **kwargs) 
    File "/home/mariusz/.virtualenvs/urlop/local/lib/python2.7/site-packages/django/views/generic/edit.py", line 161, in get 
    form_class = self.get_form_class() 
    File "/home/mariusz/.virtualenvs/urlop/local/lib/python2.7/site-packages/django/views/generic/edit.py", line 119, in get_form_class 
    return model_forms.modelform_factory(model, fields=self.fields) 
    File "/home/mariusz/.virtualenvs/urlop/local/lib/python2.7/site-packages/django/forms/models.py", line 539, in modelform_factory 
    return type(form)(class_name, (form,), form_class_attrs) 
    File "/home/mariusz/.virtualenvs/urlop/local/lib/python2.7/site-packages/django/forms/models.py", line 284, in __new__ 
    opts.help_texts, opts.error_messages) 
    File "/home/mariusz/.virtualenvs/urlop/local/lib/python2.7/site-packages/django/forms/models.py", line 184, in fields_for_model 
    opts = model._meta 
AttributeError: type object 'MyModel' has no attribute '_meta' 
+0

Пожалуйста, покажите * полный * traceback. –

+0

Я добавил полный traceback. – mark

+0

проверял именно ваш код, и он работает для меня. что находится в вашем 'urls.py', указывая на это представление? –

ответ

1

Я не могу видеть, почему именно это дает эту ошибку (это, кажется, что MyModel не на самом деле ваш класс модели - вы переопределены его в другом месте?), Но есть одна очевидная проблема: на ваш взгляд, должны быть ссылки форма, которую вы определили, а не модель напрямую.

class MyView(CreateView): 
    form_class = MyInputForm 
+0

Спасибо Даниэль :) – mark

-1

Вы пробовали, имеющую мету как функцию, чтобы выглядеть следующим образом;

class MyModel(models.Model): 
    free_day = models.CharField(max_length=255) 
    name = models.CharField(max_length=255, blank=True, null=True) 

    def Meta(): 
     verbose_name = _('MyModel') 
     verbose_name_plural = _('MyModels') 

    def __unicode__(self): 
     return self.free_day 
+0

Это не работает. – mark

0

Вместо следующее:

def get(request,self): 

Вы могли бы использовать что-то вроде этого:

def get(self,request): 

Все остальное должно быть просто отлично !!!

Смежные вопросы