gpt4 book ai didi

Django 使用 GenericForeignKey 引用模型

转载 作者:行者123 更新时间:2023-12-02 07:18:13 26 4
gpt4 key购买 nike

好的,所以我的数据库有一个标题/行类型结构,其中有标题模型,其中有许多行模型。许多型号都采用这种结构。我想跟踪哪些 header 模型与哪些行模型相关。

最初,我只是在 header 模型上有一个指向相关模型的属性,但希望将其存储在数据库中。

所以我之前使用过 djangos GenericForeignKey 东西,但只有当我想与多个模型记录建立外键关系,而不仅仅是模型本身时。

使用GenericForeignKey,您需要三件事:

content_type = models.ForeignKey(ContentType)
object_id = models.PositiveIntegerField()
content_object = generic.GenericForeignKey('content_type', 'object_id')

就我而言,我不需要object_id,但我不认为我可以忽略它......

毕竟,我想我的问题是使用 GenericForeignKey 是否是设置此模型的最佳方法,或者是否还有其他解决方案。

另一个想法是只使用型号名称......

希望一切都有意义。谢谢

最佳答案

由于您只是希望它指向模型本身,而不是单个记录,因此您所需要的只是

my_model = models.ForeignKey(ContentType)

然后,如果您想找出 header 与哪个模型关联,只需执行

>>> my_header.my_model
<ContentType: Model Name>

如果要指向特定记录,则需要其他两个字段。 object_id 字段也保存您指向的记录的 pk。 content_object 字段不存储在数据库中,而只是一个很好的包装器(使用 object_id 和 content_type 字段)返回模型对象,而不必根据内容类型和 id 手动查找记录.

关于Django 使用 GenericForeignKey 引用模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5072280/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com