Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 模型对象没有属性保存_Python_Django_Django Models_Django Views - Fatal编程技术网

Python 模型对象没有属性保存

Python 模型对象没有属性保存,python,django,django-models,django-views,Python,Django,Django Models,Django Views,这就是我定义的模型: class Post(models.Model): user = models.ForeignKey(MSUser) upvote_count = models.IntegerField() post_status = models.IntegerField(choices = POST_STATUS) title = models.CharField(max_length=200,null = True,blank = True)

这就是我定义的模型:

class Post(models.Model):
    user = models.ForeignKey(MSUser)
    upvote_count = models.IntegerField()
    post_status = models.IntegerField(choices = POST_STATUS)
    title = models.CharField(max_length=200,null = True,blank = True)
    content = models.CharField(max_length=1000,null = False,blank = False)
    created_at = models.DateTimeField(auto_now_add=True, null=True)
    updated_at = models.DateTimeField(auto_now=True, null=True)

    def __unicode__(self):
        return self.content

    def get_user(self):
        return self.user.__unicode__()

    def save(self, **kwargs):
        super(Post, self).save(**kwargs)
以下是视图:

class Post (View):
    @method_decorator(csrf_exempt) # To be removed
    def dispatch(self, request, *args, **kwargs):
#         Placeholder for fine grained permission system to prevent unwarranted GET/POST/PUTS
#          Check request.user properties (like group etc) and request.method 
#             return HttpResponseForbidden()
        return super(Post, self).dispatch(request, *args, **kwargs)

    def get(request):
        pass

    def post(self, request):
        responseMessage = {}  
        user = request.user
        if user.is_authenticated():
            title = request.POST.get('title', None)
            content = request.POST.get('content', None)
            if title is None or content is None:
                responseMessage['status'] = 'failure'
                responseMessage['message'] = 'Mandatory data is missing.'
                return HttpResponse(json.dumps(responseMessage))
            else:
                newPost = Post(user = user,
                               title = title,
                               content = content,
                               post_status = PS_CREATED,
                               upvote_count = 0)
                newPost.save()
                responseMessage['status'] = 'success'
                responseMessage['message'] = 'Post created successfully'
                responseMessage['server_id'] = newPost.id
                return HttpResponse(json.dumps(responseMessage))
邮递员发送请求时,我不断收到以下错误:

AttributeError: 'Post' object has no attribute 'save'

我做错了什么?

您有名为
Post
的重复对象,这些对象是混合的。看起来您正试图保存
视图
对象,而不是
模型
对象。

视图类和模型类的名称相同,即
Post

因此,当您在视图中执行
Post(user=..)
操作时,它会尝试创建
Post
视图对象,然后对其调用
.save()
,而它应该创建
Post
模型对象并保存它

要解决您的问题,您需要将视图类名更改为其他名称

试着改变

class Post(View): 
差不多

class PostView(View): 

实际上,您应该使用一个ModelForm。然后您可以使用CreateView并去掉这里的大部分逻辑。