from django.db import models
from django.contrib.auth.models import AbstractUser
class TipoSexo(models.TextChoices):
"""
Aqui establecemos los tipos de sexo a elegir en los animales
"""
Macho = "1", "Macho"
Hembra = "2", "Hembra"
class User(AbstractUser):
"""
Modelo custom de usuario
Creando esta clase que viene de AbstractUser permitira que esta
se comporta de manera idéntica al modelo de usuario predeterminado,
pero podremos con los parametros desados
"""
foto_de_perfil = models.ImageField(
upload_to="profiles/", default="profiles/avatar.jpg")
numero_de_telefono = models.CharField(max_length=20, blank=True)
municipio = models.CharField(max_length=20, blank=True)
def __str__(self):
return self.username
class Raza(models.Model):
"""
Aqui guardaremos la raza de los animales
"""
name = models.CharField(max_length=30)
def __str__(self):
return self.name
class Municipio(models.Model):
"""
Aqui guardaremos los municipios
"""
name = models.CharField(max_length=30 )
class Meta:
verbose_name_plural = "Municipios"
def __str__(self):
return self.name
class TipoAnimal(models.Model):
"""
Aqui guardaremos el tipo de animal
"""
name = models.CharField(max_length=30)
def __str__(self):
return self.name
class Animal(models.Model):
"""
En esta clase animal especificamos todos los campos a guardar sobre el animal
y las otras clases a las que hace referencia
"""
user = models.ForeignKey(
User, on_delete=models.CASCADE, related_name="animales_usuario")
nombre = models.CharField(max_length=30)
tipo_de_animal = models.ForeignKey(
TipoAnimal, on_delete=models.CASCADE, related_name="tipos_animales")
sexo = models.CharField(max_length=10, choices=TipoSexo.choices)
imagen = models.ImageField(upload_to="animales/",
default="animals/default.jpg")
raza = models.ForeignKey(
Raza, on_delete=models.CASCADE, related_name="animales")
municipio = models.ForeignKey(
Municipio, on_delete=models.CASCADE, related_name="animales_municipio")
observaciones = models.CharField(max_length=100, blank=True)
fecha_perdida = models.DateField()
def __str__(self):
return self.name