CharField()类的参数

时间:2014-10-08 04:07:28

标签: python django

CharField('name',max_length=100)CharField(max_length=100)之间的区别是什么? 用于什么参数'name'
什么是CharField()构造函数?

有人可以给我一个链接吗?

2 个答案:

答案 0 :(得分:2)

CharField继承自名为Field的类,该类具有构造函数

class Field(RegisterLookupMixin):
    """Base class for all field types"""
    # <some more code>

    def __init__(self, verbose_name=None, name=None, primary_key=False,
            max_length=None, unique=False, blank=False, null=False,
            db_index=False, rel=None, default=NOT_PROVIDED, editable=True,
            serialize=True, unique_for_date=None, unique_for_month=None,
            unique_for_year=None, choices=None, help_text='', db_column=None,
            db_tablespace=None, auto_created=False, validators=[],
            error_messages=None):

Char Field构造函数

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

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

charfield构造函数基本上将参数(keyword和ordinary)传递给字段构造函数,并添加一个maxlength验证器。

所以CharField中的参数'name'('name',max_length = 100被赋值给verbose_name

见这个

https://github.com/django/django/blob/master/django/db/models/fields/__init__.py

答案 1 :(得分:1)

这是verbose field name

根据文件:

  

每个字段类型,但ForeignKey,ManyToManyField和   OneToOneField,将作为可选的第一个位置参数 - 一个详细的   名称即可。如果未给出详细名称,Django将自动执行   使用字段的属性名称创建它,将下划线转换为   空格。

以下是CharField的文档:https://docs.djangoproject.com/en/2.1/ref/models/fields/#django.db.models.CharField