【问题标题】: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 参数留空。如果我在管理员中执行相同操作,则会收到“此字段为必填项”错误。所以我必须自己动手。

标签: django model save admin


【解决方案1】:

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

【讨论】:

  • 但是为什么在命令中保存工作(没有blank=true)而不是在管理员中?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多