Короче говоря : это опции, которые вы можете передать CharField
[Django-doc] , а также Field
[Джанго-док] .
A SlugField
- это класс, который расширяет класс CharField
, это можно увидеть в исходном коде [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
.
Класс CharField
передает аргументы и своему супер-конструктору, согласно исходному коду [GitHub] :
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))
Это означает, что это сводится к опциям , которые можно передать любому Field
[Django-doc] . Например: db_column
, default
, editable
, help_text
и т. Д.