Model de exemplo
Essa é a model que será usada de exemplo durante todas as demonstrações feitas na documentação:
from django.contrib.auth.models import User
from django.db import models
from novadata_utils.models import NovadataModel
class Exemplo(NovadataModel):
nome = models.CharField(
verbose_name="Nome",
max_length=100,
)
slug = models.SlugField(
verbose_name="Slug",
max_length=100,
blank=True,
null=True,
)
novo_slug = models.SlugField(
verbose_name="Novo slug",
max_length=100,
blank=True,
null=True,
)
exemplo_slug = models.SlugField(
verbose_name="Exemplo slug",
max_length=100,
blank=True,
null=True,
)
teste = models.CharField(
verbose_name="Teste",
max_length=100,
)
fornecedor = models.ForeignKey(
"core.Fornecedor",
verbose_name="Fornecedor",
on_delete=models.SET_NULL,
null=True,
)
estados = models.ManyToManyField(
"core.Estado",
verbose_name="Estados",
blank=True,
)
STATUS_CHOICES = [
("Ativo", "Ativo"),
("Inativo", "Inativo"),
("Bloqueado", "Bloqueado"),
("Cancelado", "Cancelado"),
("Suspenso", "Suspenso"),
("Pendente", "Pendente"),
("Aguardando", "Aguardando"),
]
status = models.CharField(
verbose_name="Status",
max_length=10,
choices=STATUS_CHOICES,
default="Ativo",
)
usuario = models.OneToOneField(
User,
verbose_name="Usuário",
on_delete=models.SET_NULL,
null=True,
)
campo_numerico = models.DecimalField(
verbose_name="Campo numérico",
max_digits=10,
decimal_places=2,
blank=True,
null=True,
)
campo_inteiro = models.IntegerField(
verbose_name="Campo inteiro",
blank=True,
null=True,
)
campo_data = models.DateField(
verbose_name="Campo data",
blank=True,
null=True,
)
campo_hora = models.TimeField(
verbose_name="Campo hora",
blank=True,
null=True,
)
campo_data_hora = models.DateTimeField(
verbose_name="Campo data hora",
blank=True,
null=True,
)
@property
def nome_teste(self):
"""Retorna a concatenação dos campos 'nome' e 'teste'."""
return f"{self.nome or 'Sem nome'} - {self.teste or 'Sem teste'}"
def __str__(self):
"""Método que retorna a representação do objeto como string."""
return self.nome
class Meta:
"""Sub classe para definir meta atributos da classe principal."""
app_label = "core"
verbose_name = "Exemplo"
verbose_name_plural = "Exemplos"