广告区

广告区


本站消息

站长简介/公众号

关注本站官方公众号:程序员总部,领取三大福利!
福利一:python和前端辅导
福利二:进程序员交流微信群,专属于程序员的圈子
福利三:领取全套零基础视频教程(python,java,前端,php)

  价值13000svip视频教程,python大神匠心打造,零基础python开发工程师视频教程全套,基础+进阶+项目实战,包含课件和源码

  出租广告位,需要合作请联系站长

+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

暂无数据

Django 向外部数据库模型添加新字段

发布于2022-05-18 03:20     阅读(143)     评论(0)     点赞(8)     收藏(4)



我正在尝试从 Oracle DB 中集成一些表,这不是我的 Django 项目的一部分。该数据库有两个我感兴趣的表,第一个有 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 为主题的简洁方式来实现这一点?


解决方案


暂无回答







所属网站分类: 技术文章 > 问答

作者:黑洞官方问答小能手

链接:https://www.pythonheidong.com/blog/article/1523234/7f2cba2309b4b93da351/

来源:python黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

8 0
收藏该文
已收藏

评论内容:(最多支持255个字符)