Django forms.ModelForm slugfield db_index=True

Django forms.ModelForm slugfield db_index=True

我的模型中有一个 slug 字段 db_index=True:

class Student(models.Model):
    ...
    slug = models.SlugField(max_length=100, db_index=True)

当通过我的表单添加新记录时,我希望 slug 字段填充我在模型 save() 方法中编码的 slugified 文本。但是,这从来没有发生过,因为我卡在了表单字段级别的验证中。

我尝试了很多选项,例如 clean()clean_field() 等,但所有选项都仅在 slug 字段输入内容后运行。

您必须允许使用 blank=True 在表单中输入空白值。您通常还希望使用 unique=True 而不是 db_index=True 作为 slug 字段:

slug = models.SlugField(max_length=100, blank=True, unique=True)

请注意 unique 意味着 db_index