我正在使用遗留数据库将项目从Rails移植到Django.在Rails中,我有一个多态关联,允许我在数据库中的任何行添加一个脚注.我正在尝试在Django应用程序中实现相同的功能.我找到了关于通用关系的文档,它看起来很完美.不幸的是,我首先需要在遗留数据库中创建新字段以保存相关模型的ContentType id.我只使用了2个表的多态关联,所以我需要的是Django应用程序中的两个相应的ID,但我似乎找不到在Django中查找ContentType id的相应命令.
任何建议都是最受欢迎的.我尝试搜索以前的问题,但似乎无法找到我要找的东西.非常感谢您的时间和帮助.
Col*_*een 13
你可以做:
>>> b = Bookmark.objects.get(url='https://www.djangoproject.com/')
>>> bookmark_type = ContentType.objects.get_for_model(b)
>>> TaggedItem.objects.filter(content_type__pk=bookmark_type.id,
... object_id=b.id)
Run Code Online (Sandbox Code Playgroud)
所以只需实例化你的模型实例然后再做 ContentType.objects.get_for_model(<instance>).id
我认为还有一种方法可以传递模型名称...让我知道如果这样做会更好,我会试着找到它; 我过去曾经用过它.
您也可以在不创建实例的情况下获取ContentType ID,如果您没有并且不需要实例但只想按型号名称获取ContentType ID,则效率更高.
ContentType.objects.get(model='bookmark').id
注意:如果您的型号名称为大写,请使用小写进行搜索.例如:model ='bookmark'而不是'Bookmark'