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

时间:2013-05-20 11:00:18

标签: django model save admin

在我的模型中,我覆盖了博客模型的save-method,使用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",)}

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

1 个答案:

答案 0 :(得分:3)

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