Как повторно использовать свойства из таблицы с помощью django for admin?

ок. У меня есть одна таблица. например:

class AnimalGroup(models.Model):
    name = models.CharField(max_length=50, unique=True)  
    description = models.TextField(max_length=1000, blank=True)
    images = models.ImageField(upload_to="photos/groups")
    

    class Meta:
        verbose_name = "animalgroup"
        verbose_name_plural = "animalgroups"

    def __str__(self):
        return self.group_name

А это группы животных. Например:

  • млекопитающие
  • рыбы
  • рептилии

Но затем у меня есть подгруппа, в которой пользователь может ввести те же свойства, что и в AnimalGroup. А AnimalGroup может иметь несколько подгрупп. Например:

млекопитающие: кошки, собаки, котята.

А затем у вас есть само животное:

  • кошки: сиамская кошка, рэгдолл и т.д.

Мой вопрос: как я могу повторно использовать эти свойства для трех объектов? Итак

  • AnimalGroup
  • подгруппа
  • животное

Чтобы пользователь мог войти в панель администратора django:

  • млекопитающие
  • рыбы
  • рептилии

и затем можно ввести кошки и выбрать из выпадающего списка млекопитающих.

Потому что все объекты:

  • AnimalGroup
  • подгруппа
  • животное

имеют общие поля:

  • имя
  • description
  • изображения

Если я сделаю это как. Это, конечно, не очень эффективно:

class AnimalGroup(models.Model):
    name = models.CharField(max_length=50, unique=True)  
    description = models.TextField(max_length=1000, blank=True)
    images = models.ImageField(upload_to="photos/groups")



class Subgroup(models.model)
    name = models.CharField(max_length=50, unique=True)  
    description = models.TextField(max_length=1000, blank=True)
    images = models.ImageField(upload_to="photos/groups")
    animalGroup= models.ForeignKey(AnimalGroup, on_delete=models.CASCADE) 

class Animal(models.model)
    name = models.CharField(max_length=50, unique=True)  
    description = models.TextField(max_length=1000, blank=True)
    images = models.ImageField(upload_to="photos/groups")
    subgroup= models.ForeignKey(Subgroup, on_delete=models.CASCADE) 

Вернуться на верх