为啥我的保存方法在管理员中不起作用?

Posted

技术标签:

【中文标题】为啥我的保存方法在管理员中不起作用?【英文标题】:Why doesn't my save method work in the admin?为什么我的保存方法在管理员中不起作用? 【发布时间】:2013-05-20 11:00:17 【问题描述】:

在我的模型中,我覆盖了我的博客模型的保存方法,以使用 slugify 方法自动填充 slug 字段。

class BlogPost(models.Model):
    title = models.CharField(max_length=100,unique=True)
    slug = models.SlugField(max_length=100,unique=True)
    date = models.DateTimeField(auto_now_add=True)
    author = models.ForeignKey(Author)
    body = models.TextField()
    category = models.ForeignKey(BlogCategory)

    def save(self, *args, **kwargs):
        if not self.id:
            # Newly created object, so set slug
            self.slug = slugify(self.title)

        super(BlogPost, self).save(*args, **kwargs)

但是如果不手动设置 slug 字段或执行类似操作,则无法在管理界面中创建新对象

class BlogPostAdmin(admin.ModelAdmin):
    prepopulated_fields = "slug": ("title",)

基本上,我目前定义了两次相同的功能。关于如何避免这种情况的任何想法?并且:为什么我自己的保存方法在管理员中不起作用?

【问题讨论】:

管理界面中的哪些“不起作用”?当你尝试时会发生什么?你得到什么错误? 当我通过命令更改我的数据库时,显然我将 slug 参数留空。如果我在管理员中执行相同操作,则会收到“此字段为必填项”错误。所以我必须自己动手。 【参考方案1】:

您应该将blank=True 放在slug 字段的定义中。

【讨论】:

但是为什么在命令中保存工作(没有blank=true)而不是在管理员中?

以上是关于为啥我的保存方法在管理员中不起作用?的主要内容,如果未能解决你的问题,请参考以下文章

为啥“发布”方法在我的 django 应用程序中不起作用?

为啥 publishProgress 方法在服务中不起作用?

为啥 setVisibility() 在 onResumeFragments() 中不起作用?

为啥 Set.add() 方法在匿名 Runnable 中不起作用?

为啥我的 favicon 在我的下一个 js 应用程序中不起作用?

为啥我的动画在 Firefox 中不起作用?