0

私のモデルでは、ブログ モデルの 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",)}

基本的に、現在、同じ機能を 2 回定義しています。これを回避する方法についてのアイデアはありますか?そして、管理者で自分の保存方法が機能しないのはなぜですか?

4

1 に答える 1

3

blank=Trueフィールドの定義を入れる必要がありslugます。

于 2013-05-20T11:53:13.550 に答える