哪种类型的选项适用于SlugField?

时间:2019-01-15 23:47:27

标签: python django django-models field

如果我们看到Django的文档,就会看到它;

SlugField

class SlugField(max_length=50, **options)

**options:是个怪胎,但是Django没有向我展示我可以使用它的其他参数的任何信息。

我很感谢有人帮助我。

https://docs.djangoproject.com/en/2.1/ref/models/fields/#slugfield

1 个答案:

答案 0 :(得分:1)

简而言之:您可以将这些选项传递给CharField [Django-doc],也可以传递给Field [Django-doc]

SlugField是扩展CharField类的类,我们可以在source code [GitHub]中看到它:

class SlugField(CharField):
    default_validators = [validators.validate_slug]
    description = _("Slug (up to %(max_length)s)")

    def __init__(self, *args, max_length=50, db_index=True, allow_unicode=False, **kwargs):
        self.allow_unicode = allow_unicode
        if self.allow_unicode:
            self.default_validators = [validators.validate_unicode_slug]
        super().__init__(*args, max_length=max_length, db_index=db_index, **kwargs)

    #...

因此,它默认将max_length设置为50,将db_index设置为True,将allow_unicode设置为False,并将所有位置和超级构造函数(CharField之一的命名实参。

根据source code [GitHub]CharField类也将参数传递给其超级构造函数:

class CharField(Field):
    description = _("String (up to %(max_length)s)")

    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.validators.append(validators.MaxLengthValidator(self.max_length))

所以这意味着它可以归结为options one can pass to any Field [Django-doc]。例如:db_columndefaulteditablehelp_text等。