我试图了解Django中的通用外键。我只是运行了一个有效的输入脚本,但仍然有疑问:
所有插入的行都引用相同的content_type,因此它们都具有相同的content_type_id(在本例中为35)是有意义的。但是数字35是哪里来的呢?我是否在其他地方有其他34种content_type,例如Django在content_type中的默认用法? (不,我检查过)。此号码的使用与PK或FK有什么区别?
object_id就像我的主键一样,是一个uuid。每行这些似乎都不同。但是,该编号标识的对象是什么?由于通用外键将GenericForeignKey('content_type','object_id')用作args,也许这是该行与我的content_type的关系的“通用”外键吗?还是这行以后可能与我连接的所有将来content_type的通用外键?由于在这种情况下,它们都指向相同的内容对象,为什么它们都没有获得相同的object_id,就像它们都具有相同的content_type_id一样?
答案 0 :(得分:1)
您正在使事情复杂化。
内容类型ID是ContentType表中目标模型的ID。因此,是的,您的数据库中至少有34种其他内容类型-或某种程度上已经存在。
对象ID是目标对象的ID(即主键)。当然,它们都是不同的。如果它们都相同,它们都将引用同一对象。