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'
4

3 に答える 3

3

commentビュー内からモデルをインポートしてからcomment、ビュー名として再度使用する可能性があります。そのため、エラーがスローされます。

ビューとモデルを同じモジュールで使用する場合は、別の名前を使用してください。

于 2013-11-09T13:51:09.267 に答える
1

モデルクラスとビュー関数の名前が同じであるため、エラーが発生します。

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

クラスと関数には異なる命名規則を使用できます。PEP8 に従って、クラス名の最初の文字は大文字/大文字にする必要があり、関数の名前は小文字にする必要があります。

したがって、あなたの場合、名前をまったく同じに保つ必要がある場合は、モデルクラスの名前をコメント に変更し、ビュー関数の名前をコメントにすると、問題が解決するはずです。

于 2013-11-09T14:34:45.400 に答える