Django的复合外键支持

django-composite-foreignke的Python项目详细描述


允许创建一个django foreignkey,它不与其他模型的pk链接,而是与本地模型列或固定值匹配的多列。

https://img.shields.io/travis/onysos/django-composite-foreignkey/master.svghttps://readthedocs.org/projects/django-composite-foreignkey/badge/?version=latesthttps://img.shields.io/coveralls/onysos/django-composite-foreignkey/master.svgLatest PyPI versionNumber of PyPI downloads per month

有些数据库有一个复合主键,这导致django外键不可能被使用。

现在,django不支持复合主键see ticket,而foreignkey不支持多列。 但幸运的是,foreignkey的基类很好地支持它,所以这个库只是在foreignobject周围添加了一个小包装器,使它更有用。 这个实现的真正附加功能是支持使用原始值定制链接。

< P>复合外键的实现通过强制提供另一个模型的对应列,而不是有力的主键来跳过复合主键的复杂度。

安装

  1. 使用pip安装:

    pip install django-composite-foreignkey

  2. 或者,您可以安装下载或克隆此repo并调用

    ^{tt2}$.

示例

您有这个型号

classCustomer(models.Model):company=models.IntegerField()customer_id=models.IntegerField()name=models.CharField(max_length=255)address=CompositeForeignKey(Address,on_delete=CASCADE,to_fields={"tiers_id":"customer_id","company":LocalFieldValue("company"),"type_tiers":RawFieldValue("C")})classMeta(object):unique_together=[("company","customer_id"),]classContact(models.Model):company_code=models.IntegerField()customer_code=models.IntegerField()surname=models.CharField(max_length=255)# virtual fieldcustomer=CompositeForeignKey(Customer,on_delete=CASCADE,related_name='contacts',to_fields={"customer_id":"customer_code","company":"company_code"})

您可以像使用任何外键一样使用contact.customer,但在场景中,它将使用公司和客户ID查询客户表。

要求

  • python 2.7、3.4、3.5、3.6、3.7
  • Django 1.11、2.0、2.1

欢迎对其他django和python版本的贡献和pull请求。

错误和请求

如果您发现了一个bug或者有其他功能的请求,请使用github上的问题跟踪器。

https://github.com/onysos/django-composite-foreignkey/issues

许可证

你可以在gplv3下使用这个。

作者

原创作者和开发负责人:Darius BERNARD

谢谢

感谢django提供了这个令人惊叹的框架。感谢django-bootstrap3的应用程序结构。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java Spinner选定值未上载到firebase数据库   java如何通过bukkit中的配置添加消息?   java在SharedReference中保存列表的泛型类型   javascript Java小程序未定义   swt在Java中构建控制台应用程序   java OAuth同意屏幕没有突然显示,没有错误?   java webview选择文件安卓不工作   java Spring boot JPA如何从同一连接添加多个数据库?   java JDBC DB2驱动程序计时器线程处于阻塞状态   java我在vscode中运行flatter时看到一个错误在phone中运行应用程序somone能否帮助我plz   Java:生成JSON:如何避免生成不完整的JSON   java Date compareTo()方法始终返回1   当使用Junit runner运行测试时,java Spring自动连线失败   java Android/Sockets如何将信息从主UI线程发送到socket线程?   java Android内存声明全局变量   java如何在JBoss中拥有多个具有相同JNDI名称的数据源?   python在Java中嵌入CPython时,为什么会挂起?   java如何提供深度模拟对象?   java“find:smallint,expected:integer”Hibernate对informix数据库的验证在短时间内失败