Django多列外键
是否可以在另一个模型中定义引用多列的外键? 例如,一个外键引用product表中的两列索引和SQL语句: FOREIGN KEY (product_category,product_id) REFERENCES product(category,id) 顺便说一下,我已经研究过django.contrib.contenttypes,并不认为这是这种场景的完美解决方案. 解决方法它尚不支持.如果你愿意,有一张票和可能的方法来处理它.也许你甚至可以运行 custom sql多列主键支持 关系数据库设计使用一组列作为表的主键.当此集包含多个列时,它被称为“复合”或“复合”主键. (有关术语的更多信息,请参阅讨论数据库密钥的文章). 当前状态 当前状态是接受/分配和处理该问题,并且在http://github.com/dcramer/django-compositepks上有部分实现.该实现允许具有复合主键.但是,ForeignKey和RelatedManager中缺少对复合键的支持.因此,无法从具有复合主键的模型导航关系. 讨论: David Cramer’s initial patch The composite foreign key API design Ticket 注 – SqlAlchemy允许如下所述,你可以使用SqlAlchemy替换Django的ORM 也可以使用ForeignKeyConstraint对象在表级别定义外键.该对象可以描述单列或多列外键.多列外键称为复合外键,并且几乎总是引用具有复合主键的表.下面我们定义一个具有复合主键的表发票: invoice = Table('invoice',metadata,Column('invoice_id',Integer,primary_key=True),Column('ref_num',Column('description',String(60),nullable=False) ) 然后是一个表invoice_item,其中包含一个引用发票的复合外键: invoice_item = Table('invoice_item',Column('item_id',Column('item_name',nullable=False),ForeignKeyConstraint(['invoice_id','ref_num'],['invoice.invoice_id','invoice.ref_num']) ) Reference (编辑:甘南站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |