首页 > 解决方案 > 此类型错误的问题:save() 缺少 1 个必需的位置参数:pycharm django 中的“自我”

问题描述

我正在尝试在终端的 python shell 中保存一个查询,但似乎弹出一个错误说这个

回溯(最后一次调用):文件“”,第 1 行,类型错误:save() 缺少 1 个必需的位置参数:'self'

我不知道该怎么办。我正在尝试输入此内容post.save(),但在我按下回车后出现了上面的错误。我正在尝试的只是输入这个

>>> from django.contrib.auth.models import User 
>>> from blog.models import Post 
>>> user = User.objects.get(username='user') 
>>> Post.objects.create(title='One more post', ... slug='one-more-post', ... body='Post body/', ... author=user)
<Post: One more post> 
>>> Post.save() 

在终端

我已经尝试搜索其他人面临的相同问题,但没有一个与我的问题相匹配。模型和管理员中的所有代码都是正确的。

我已经尝试了几个网站并搜索了其他人遇到的几个问题,但我找不到解决方案。

from django.db import models
from django.utils import timezone
from django.contrib.auth.models import User

class Post (models.Model):
    STATUS_CHOICES = (
        ('draft', 'Draft'),
        ('published', 'Published'),

    )
    title = models.CharField(max_length=250)
    slug = models.SlugField(max_length=250,
                            unique_for_date='publish')
    author = models.ForeignKey(User,
                               related_name='blog_posts', on_delete=models.CASCADE)
    body = models.TextField()
    publish = models.DateTimeField(default=timezone.now)
    created = models.DateTimeField(auto_now_add=True)
    updated = models.DateTimeField(auto_now=True)
    status = models.CharField(max_length=10,
                              choices=STATUS_CHOICES,
                              default='draft')

    class Meta:
        ordering = ('-publish',)

    def __str__(self):
       return self.title.


from Django.contrib import admin
from .models import Post

class PostAdmin(admin.ModelAdmin):
    list_display = ('title', 'slug', 'author', 'publish',
                    'status')
    list_filter = ('status', 'created', 'publish', 'author')
    search_fields = ('title', 'body')
    prepopulated_fields = {'slug': ('title',)}
    raw_id_fields = ('author',)
    date_hierarchy = 'publish'
    ordering = ['status', 'publish']


admin.site.register(Post, PostAdmin)

标签: pythondjangopycharm

解决方案


save直接调用 Post 模型。那不是你想做的。通常你会在你创建的 Post 实例上调用它,但实际上你根本不需要保存它,因为create已经为你做了。

我怀疑你认为你在做什么是这样的:

post = Post(title='One more post', ... slug='one-more-post', ... body='Post body/', ... author=user)
post.save()

您在其中实例化一个名为post(使用小写p)的新实例,然后在该实例上调用 save 。

但正如我所说,在你的情况下,根本不需要调用 save 。


推荐阅读