Django добавляет новые поля в модель внешней БД
Я пытаюсь интегрировать некоторые таблицы из БД Oracle, которая не является частью моего проекта Django. В этой БД есть 2 интересующие меня таблицы, первая из которых содержит 90% информации, а вторая - оставшиеся 10%. Я написал 2 модели для этих таблиц, которые выглядят примерно так:
class MoreRelevantModel(models.Model):
FIELD_1 = models.IntegerField(primary_key=True, db_column="PK_COL_NAME")
FIELD_2 = models.CharField(max_length=40, blank=True, db_column="CHAR_VALUE_COL_NAME")
FIELD_3 = models.BooleanField(default=False, db_column="BOOL_VALUE_COL_NAME")
class Meta:
managed = False
db_table = '"SomeOracleSchema"."SomeOracleTableName"'
class LessRelevantModel(models.Model):
FIELD_1 = models.IntegerField(primary_key=True, db_column="PK_COL_NAME")
FIELD_2 = models.CharField(max_length=40, blank=True, db_column="CHAR_VALUE_RELATED_TO_MoreRelevantModel_COL_NAME")
FIELD_3 = models.BooleanField(default=False, db_column="BOOL_VALUE_COL_NAME")
class Meta:
managed = False
db_table = '"SomeOracleSchema"."SomeOracleTableName"'
Я хотел бы полностью отказаться от вызова модели LessRelevantModel в моей бизнес-логике, и вместо этого я хочу просто вызвать MoreRelevantModel, и чтобы она автоматически извлекала из соответствующей записи LessRelevantModel значение FIELD_3. Мне пришла в голову идея написать это следующим образом:
class MoreRelevantModel(models.Model):
FIELD_1 = models.IntegerField(primary_key=True, db_column="PK_COL_NAME")
FIELD_2 = models.CharField(max_length=40, blank=True, db_column="CHAR_VALUE_COL_NAME")
FIELD_3 = models.BooleanField(default=False, db_column="BOOL_VALUE_COL_NAME")
class Meta:
managed = False
db_table = '"SomeOracleSchema"."SomeOracleTableName"'
@cached_property
def _LESS_RELEVANT_ENTRY(self):
matching_entry = LessRelevantModel.objects.filter(FIELD_2=self.FIELD_2)
return matching_entry [0] if matching_entry.count() > 0 else None
@cached_property
def LESS_RELEVANT_ENTRY_FIELD_3(self):
return self._LESS_RELEVANT_ENTRY.FIELD_3 if self._LESS_RELEVANT_ENTRY else None
Вышеприведенная логика вроде как работает, но при запросе конкретной записи MoreRelevantModel она не подтягивает автоматически значение в LESS_RELEVANT_ENTRY_FIELD_3. Я бы предпочел, чтобы она это делала. Есть ли какой-нибудь изящный способ на тему Django, чтобы это произошло?