Расположение модели Django из представления

В моем models.py несколько моделей, связанных с различными сущностями

class GuardSecurity(models.Model):
    id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
    etype = models.CharField(max_length=64, default='GuardSecurity', editable=False)


class SecuredFaciliy(models.Model):
    id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
    etype = models.CharField(max_length=64, default='SecuredFaciliy', editable=False)
    facility_name=models.CharField(max_length=64)
    adress=models.CharField(max_length=64)

class License(models.Model):
    id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
    etype = models.CharField(max_length=64, default='License', editable=False)
    license_name=models.CharField(max_length=64)
    license_description=models.CharField(max_length=200)


class Equipment(models.Model):
    id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
    etype = models.CharField(max_length=64, default='Equipment', editable=False)
    equipment_name=models.CharField(max_length=64)

  
class AllEntity(models.Model):
    id = models.UUIDField(primary_key=True)
    etype = models.CharField(max_length=64)

    class Meta:
        managed=False
        db_table="entity_full_list"

Все они имеют UUID в качестве первичного ключа. Я реализую SQL представление на этих моделях

create view entity_full_list as
    select id, etype from entity_equipment
    union
    select id, etype from entity_guardsecurity
    union
    select id, etype from entity_license
    union
    select id, etype from entity_securedfaciliy

Для решения проблемы поиска соответствующей модели из таблицы представления я добавил колонку etype, которая указывает на модель (строка, которая после может быть переведена в команду)

Есть ли другой способ указать на точную модель из моего представления?

Вы можете использовать строку в sql, чтобы избежать дополнительного столбца.

create view entity_full_list as
    select id, 'type' from entity_equipment
    union
    select id, 'type' from entity_guardsecurity
    union
    select id, 'type' from entity_license
    union
    select id, 'type' from entity_securedfaciliy
Вернуться на верх