首页 > 解决方案 > Django:分区表的外键

问题描述

我使用架构师对现有表进行分区。

@architect.install('partition', type='range', subtype='integer', constraint='100', column='id')
class Project(models.Model):
    name = models.CharField(max_length=150)

项目模型被用作另一个模型的外键。

class ProjectChangeLog(models.Model):
    project = models.ForeignKey(Project, on_delete=models.CASCADE)

分区后,我无法添加任何 ProjectChangeLog 对象。它说:

IntegrityError: insert or update on table "logging_projectchangelog" violates foreign key constraint 
DETAIL:  Key (project_id)=(231) is not present in table "project_project"

标签: pythondjangopostgresqldjango-modelsdatabase-partitioning

解决方案


分区的限制之一是您不能有指向它们的外键。一种解决方法是使用自定义约束来模仿 ForeignKey 行为。这个方法可以帮助你。


推荐阅读