Расположение модели 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