0

私のdjangoプロジェクトには、タイトルのスラッグを作成したいブログモデルがあります:

class Blog(models.Model):
    title = models.CharField(default='', max_length=100, verbose_name=u'عنوان')
    slug = models.SlugField(max_length=100, allow_unicode=True)
    # other stuffs
    def save(self, *args, **kwargs):
        self.slug = slugify(self.title, allow_unicode=True)
        super(Blog, self).save(*args, **kwargs)

    def __str__(self):
        return self.slug

django admin では、slug フィールドに入力しません。保存ボタンを押すと、次のように表示されます。

この項目は必須です。

私のコードはスラッグを自動的に作成することを想定していませんか? 他にすべきことはありますか?

4

1 に答える 1

1

blank=Trueslug フィールドを設定する必要があります。このようにすると、それは必要なくなり、save メソッドの実行時にスラッグ化されたタイトルに設定されます。

class Blog(models.Model):
    title = models.CharField(default='', max_length=100, verbose_name=u'عنوان')
    slug = models.SlugField(max_length=100, allow_unicode=True, blank=True)
于 2018-11-10T08:41:16.480 に答える