Django表单.ModelForm slugfield db_index = True

问题描述

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

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

通过表单添加新记录时,我希望在填充字段中填充我在模型save()方法中编码的压缩文本。但是,这永远不会发生,因为我被困在表单字段级验证中。

我尝试了许多选项,例如clean()clean_field()等,但是所有这些选项仅在输入段子字段后才运行。

解决方法

您必须允许使用blank=True在表单上输入空白值。通常,您还希望将unique=True而不是db_index=True用于子字段:

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

请注意,unique意味着db_index