2013-11-09 3 views
2

я есть следующие модели:как отображать данные из базы данных в шаблоне

class comment(models.Model): 
    userid=models.CharField(max_length=140) 
    apparelid=models.IntegerField(blank=True) 
    desc=models.TextField(blank=True) 
    def __unicode__(self): 
     return self.userid 

форма:

class commentForm(ModelForm): 
    class Meta: 
     model=comment 
     exclude=('userid','apparelid',) 

и вид следующим образом:

def comment(request,title_id): 
    if request.method=='POST': 
     form=commentForm(request.POST) 
     if form.is_valid(): 
      new=form.save(commit=False) 
      new.userid=request.user.username 
      new.apparelid=title_id 
      new.save() 
      return HttpResponseRedirect('/') 
     else: 
      form=commentForm() 

    template=loader.get_template('apple3/comment.html') 
    context=RequestContext(request,{ 
             'form':form, 
             } 
          ) 
    return HttpResponse(template.render(context)) 

всякий раз, когда я открываю моя страница, содержащаяся выше формы, показывает ошибку следующим образом:

Exception Type:  AttributeError 
Exception Value:  'function' object has no attribute 'objects' 

ответ

3

Возможно, вы импортируете модель comment с вашего собственного вида, а затем снова используйте comment в качестве вида. Вот почему возникает ошибка.

Пожалуйста, используйте другое имя для своего вида и модели, если вы используете их в одном модуле.

1

Название модели класса и вид функции такое же, которое приводит к ошибке:

Exception Value:  'function' object has no attribute 'objects' 

Вы можете использовать различные соглашения об именах для ваших классов и функций. В соответствии с PEP8 первая буква имени класса должна быть заглавной/прописной, а имя функции должно быть строчным.

Так что в вашем случае, если вы должны держать имена точно так же, вы можете переименовать модель класс для комментария и дайте имя вашей функции просмотра в быть комментарием и это должно решить проблему.

2

Проблема, по-видимому, решена @mariodev. Additionaly, я бы рекомендовал следующие два шага, как средство избежать подобных проблем в будущем:

  1. Читать PEP8, Руководство Стиль для Python кода тщательно
  2. Используйте только packages and modules import.

После этих двух ссылок ваш код будет более пуфоническим и менее подверженным ошибкам.

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