django - 了解 Django 中的通用外键
问题描述
我正在尝试了解 Django 中的通用外键。我刚刚运行了一个有效的输入脚本,但我仍然有问题:
所有插入的行都引用相同的 content_type,因此它们都具有相同的 content_type_id 是有道理的,在本例中为 35。但是数字 35 是从哪里来的?我在其他地方是否还有 34 个其他 content_type,例如 Django 对 content_type 的默认使用?(不,我检查过)。这个数字的使用与 PK 或 FK 有何不同?
object_id 就像我的主键一样,是一个 uuid。这些似乎每行都不同。但是这个数字所识别的对象是什么?由于通用外键将 GenericForeignKey('content_type', 'object_id') 作为参数,也许这是该行与我的 content_type 关系的“通用”外键?或者它是我以后可能连接到的任何和所有未来 content_types 的通用外键?既然在这种情况下它们都指向同一个内容对象,为什么它们没有得到相同的 object_id,就像它们都得到相同的 content_type_id 一样?
解决方案
你把事情复杂化了。
内容类型 id 是 ContentType 表中目标模型的 id。所以是的,您的数据库中至少有 34 种其他内容类型,或者在某些时候已经存在。
对象 id 是目标对象的 id - 即主键。当然,它们都是不同的;如果它们都相同,它们都将引用同一个对象。
推荐阅读
- php - 使用 PHP 在类中获取错误
- python - 在 Flask DB 类上使用 SQLalchemy distinct 函数
- amazon-web-services - 无法为“”重新启动应用服务器:名为“”的环境对于此操作处于无效状态。必须准备好
- php - 查询结果重叠
- mongodb - 即使在同一个局域网中,我也无法连接到 mongodb
- windows - vb.net 中受保护注册表的 GetValueNames()
- python-3.x - 有没有办法获得 TFRecord 文件的大小和其中一个示例的大小?
- python-3.x - Pandas DF Lookup - 如果记录的值不可用,则采用最新的可用值
- java - 无法切换到框架,即使我通过正确的框架 id 或 xpath 也找不到元素
- saml - ADFS 3.0 与 WS-Federation 一起使用,但在使用 SAML 时失败