0

在我的模型中,我覆盖了我的博客模型的保存方法,以使用 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",)}

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

4

1 回答 1

3

您应该blank=True输入该slug字段的定义。

于 2013-05-20T11:53:13.550 回答