3.1. Model About¶
What are model fields?
Model field arguments
Fat model architecture
Single File vs. Models per file
3.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
3.1.2. Abstract Models¶
class MyBaseModel(models.Model):
class Meta:
abstract = True
class BaseModel(models.Model):
uuid = models.UUIDField(verbose_name=_('Unique UUID'), unique=True, null=False, blank=False, default=uuid4, editable=False)
creation_author = models.ForeignKey(verbose_name=_('Creation Author'), to='auth.User', null=True, blank=True, default=None, on_delete=models.SET_NULL, related_name='creation_author')
creation_date = models.DateTimeField(verbose_name=_('Creation Date'), auto_now_add=True, editable=False)
modification_date = models.DateTimeField(verbose_name=_('Modification Date'), auto_now=True)
modification_author = models.ForeignKey(verbose_name=_('Modification Author'), to='auth.User', null=True, blank=True, default=None, on_delete=models.SET_NULL, related_name='modification_author')
ip_address = models.GenericIPAddressField(verbose_name=_('IP Address'), null=True, blank=True, default=None, editable=False)
class Meta:
abstract = True
3.1.3. Database schema migration¶
Makemigrations:
$ python manage.py makemigrations
Migrations for 'contact':
addressbook/contact/migrations/0001_initial.py
- Create model Contact
Migrate:
$ python manage.py migrate
Operations to perform:
Apply all migrations: admin, auth, contenttypes, contact, sessions
Running migrations:
Applying contact.0001_initial... OK