私のモデルでは、ブログ モデルの 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 回定義しています。これを回避する方法についてのアイデアはありますか?そして、管理者で自分の保存方法が機能しないのはなぜですか?