5.1. Model About

  • What are model fields?

  • Model field arguments

  • Fat model architecture

  • Single File vs. Models per file

>>> 
... from django.db import models
... from django.utils.translation import gettext_lazy as _
...
...
... 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)
...     birthdate = models.DateField(verbose_name=_('Birthdate'), null=True, blank=True, default=None)
...     email = models.EmailField(verbose_name=_('Email'), max_length=100, null=True, blank=True, default=None, unique=True)
...     phone = models.CharField(verbose_name=_('Phone Number'), max_length=20, null=True, blank=True, default=None)
...     tax_number = models.CharField(verbose_name=_('Tax Number'), max_length=20, null=True, blank=True, default=None)
...
...     def __str__(self):
...         return f'{self.firstname} {self.lastname}'
...
...     class Meta:
...         app_label = 'shop'
...         verbose_name = _('Customer')
...         verbose_name_plural = _('Customers')

5.1.1. Attributes

  • blank

  • choices

  • db_column

  • db_index

  • default

  • editable

  • error_message

  • help_text

  • limit_choices_to

  • max_length

  • null

  • primary_key

  • unique

  • validators

  • verbose_name