python - django model里怎么实现外键对多种model
PHP中文网
PHP中文网 2017-04-17 12:59:30
[Python讨论组]

就是让ForeignModel里的model不止一种,貌似choice不行

PHP中文网
PHP中文网

认证高级PHP讲师

全部回复(1)
ringa_lee

首先题主用的Django版本是什么,django貌似没见过ForeignModel,根据orm,ForeignKey实际上就是sql里面的外键,个人理解楼主的题目是能不能一个字段对应多个其他表,如下:

class WhatAreYouTryToAsk:
    filed_XXX = models.ForeignKey((ModelA,ModelB,))  

这是不科学的啊亲,对于sql来说也不会一个字段能对应多个外键,想实现这种效果只能是有一张ModelA,ModelB的中间表,而filed的外键对应这张中间表

class MiddleTable(models.Model):
    model_a =  models.ForeignKey(ModelA)  
    model_b =  models.ForeignKey(ModelB) 

class WhatAreYouTryToAsk:
    filed_XXX = models.ForeignKey(MiddleTable) 

简单的说就是ModelA和ModelB有一个多对多的关系,上面的方法是显示的指明一个MiddleTable表,实时上可以使用Django里面的ManyToMany,ManyToMany的实际上会建一张中间表,因此你可以在ModelA或ModelB建立一个ManyToMany的字段,具体ManyToMany的用法请查阅文档。

class ModelA(models.Model):
    model_bs = ManyToMany(ModelB)

class WhatAreYouTryToAsk:
    filed_XXX = models.ForeignKey(ModelA)
    # or this, 具体实现看需求
    # filed_XXX = models.ForeignKey(ModelB)
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号