问题标签 [django-generic-relations]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
114 浏览

django - 使用 GenericForeignKey 预取模型

我有一个数据结构,其中 aDocument有很多Blocks只有一个ParagraphHeader. 一个简化的实现:

(请注意,与上面的实现不同,实际上需要在单独的模型中使用Paragraph和。)Header

我使用jinja2模板来为文档创建一个 Latex 文件。尽管 jinja 为每个块和段落或标题执行新的数据库查询,但模板化很慢。

content_block.latex_text()是将 HTML 字符串转换为 Latex 字符串的函数)

因此我想预取script.blocksblocks.content_block. 我知道在 Django 中有两种预取方法:

  1. select_related()执行JOIN查询,但仅适用于ForeignKeys. 它适用于script.blocks但不适用于blocks.content_block.

  2. prefetch_related()也可与 GenericForeignKeys 一起使用,但如果我正确理解文档,它一次只能获取一个ContentType,而我有两个。

有什么方法可以在这里执行必要的预取吗?谢谢您的帮助。

0 投票
1 回答
19 浏览

django - 使用 if 语句检查内容类型以确定要执行的操作

我有 django 模型与关联的通用关系。

在大多数情况下,通用关系与这两个模型之一相关联

在视图函数中,我试图找出特定实例之间的模型Title以及JobPosition与特定SectionLine实例相关联的模型,以便我可以确定下一步要做什么。

我现在可以访问SectionLine.content_type以查看内容类型(例如,它打印titles_and_names | title- 应用程序名称是titles_and_names),但我不知道将其与什么进行比较......

基本上,if SectionLine.content_type == ???

0 投票
0 回答
8 浏览

python - 这个“.set() 东西在 django 的通用关系中是如何工作的?如果我想使用 python shell 创建一个对象

这是我的模型

我检查了这个链接,但它没有解决我的问题

User, Business 与 Deposit 有通用关系

Deposit当我使用 Python shell创建对象时

我收到这个错误

如何解决这个问题?