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