【问题标题】:how to display the data from the database in a template如何在模板中显示数据库中的数据
【发布时间】:2013-11-09 13:05:50
【问题描述】:

我有以下型号:

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'

【问题讨论】:

    标签: python django django-models django-forms django-views


    【解决方案1】:

    您可能从视图中导入comment 模型,然后再次使用comment 作为视图名称。这就是引发错误的原因。

    如果您在同一个模块中使用它们,请为您的视图和模型使用不同的名称。

    【讨论】:

      【解决方案2】:

      @mariodev 似乎解决了手头的问题。另外,我建议采取以下两个步骤来避免将来出现类似问题:

      1. 彻底阅读PEP8,Python 代码风格指南
      2. 仅使用packages and modules import

      遵循这两个链接将使您的代码更加 Python 且不易出错。

      【讨论】:

        【解决方案3】:

        模型class和视图function名称相同导致报错:

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

        您可以为您的类和函数使用不同的命名约定。根据 PEP8,类名的第一个字母应为大写/大写,函数名应为小写。

        所以在您的情况下,如果您必须保持名称完全相同,您可以将您的模型类重命名为 Comment 并让您的视图函数的名称为 comment 并且应该能解决问题。

        【讨论】:

          猜你喜欢
          • 2018-08-29
          • 1970-01-01
          • 1970-01-01
          • 2020-07-10
          • 2019-04-02
          • 2016-05-06
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多