Какие типы опций применимы к SlugField? - PullRequest
0 голосов
/ 16 января 2019

Если мы видим документацию Django, мы видим это;

SlugField

class SlugField(max_length=50, **options)

**options: это kwargs, но Django не показывает мне, какой другой параметр я могу использовать.

Я ценю, если кто-нибудь мне поможет.

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

1 Ответ

0 голосов
/ 16 января 2019

Короче говоря : это опции, которые вы можете передать 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 и т. Д.

...