Где в Django Charfield() max_length определена как обязательная?

У меня есть приложение Django, и я пытаюсь понять логику, как правильно читать документацию, чтобы, например, создать объект Charfield.

Вот моя модель:

from django.db import models

class Person(models.Model):
    f_name = models.CharField()
    . . . . . . 

Если я запускаю приложение, то получаю ошибку:

Charfields must define a 'max_length' attribute

Я понял, что мне нужно сделать:

f_name = models.CharField(max_length=40)

Но почему? Когда я читаю код для Charfield, его там нет, поэтому я читаю код для его суперкласса Field, но я не вижу, где max_length устанавливается обязательным!

Прошу помощи (новичок в oop)

Спасибо :)

Технически, проверка находится прямо здесь, в определении CharField, как проверка системы Django (def _check_max_length_attribute(self, **kwargs):):

def _check_max_length_attribute(self, **kwargs):
    if self.max_length is None:
        return [
            checks.Error("CharFields must define a 'max_length' attribute.",
                obj=self,
                id="fields.E120",
            )
        ]
    # ...

Подключается для проверки системы Django на наличие CharFields в функции check чуть выше.

Для справки, я нашел его, просто поискав CharFields must define a в кодовой базе Django.

Вернуться на верх