5.2. Models Field String¶
models.CharField
- stores a string of characters with maximum length (max: 255 characters)models.TextField
- stores a string of characters without maximum lengthmodels.SlugField
- stores a normalized string of characters (lowercase, no spaces, no special characters, etc.)models.EmailField
- stores an email address with validationmodels.URLField
- stores an URL address with validation
>>>
... from django.db import models
... from django.utils.translation import gettext_lazy as _
... from django.utils.text import slugify
...
...
... class Customer(models.Model):
... firstname = models.CharField(verbose_name=_('First Name'), max_length=50)
... lastname = models.CharField(verbose_name=_('Last Name'), max_length=50, db_index=True)
... username = models.SlugField(verbose_name=_('Username'), max_length=50, unique=True)
... email = models.EmailField(verbose_name=_('Email'), max_length=100, blank=True, null=True, default=None)
... website = models.URLField(verbose_name=_('Website'), blank=True, null=True, default=None)
... comment = models.TextField(verbose_name=_('Comment'), blank=True, null=True, default=None)
...
... def __str__(self):
... return f'{self.firstname} {self.lastname}'
...
... class Meta:
... verbose_name = _('Customer')
... verbose_name_plural = _('Customers')
5.2.1. Arguments¶
blank
choices
db_column
db_index
default
editable
error_message
help_text
limit_choices_to
max_length
null
primary_key
unique
validators
verbose_name
5.2.2. SlugField¶
name = 'Apple MacBook Pro 13" SSD 4TB'
sligify(name) # 12345,apple-macbook-pro-13-ssd-4tb # good
sligify(name) # apple-macbook-pro-13-ssd-4tb,12345 # better
example.com/macbook-pro-13-ssd-4tb,12345
>>>
... class Customer(models.Model):
... firstname = models.CharField(verbose_name=_('First Name'), max_length=50)
... lastname = models.CharField(verbose_name=_('Last Name'), max_length=50, db_index=True)
... username = models.SlugField(verbose_name=_('Username'), max_length=50, unique=True)
...
... def save(self, *args, **kwargs):
... self.username = slugify(f'{self.firstname}.{self.lastname}')
... return super().save(*args, **kwargs)