问题标签 [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.
python - 在 Django 中,如何从单个表单字段填充通用关系?
在我们的应用程序中,我们的模型A
具有通用关系的字段,因为它可能与两个模型(B
或C
)之一的实例相关。
在填充非通用 ForeignKey 字段时,我们可以使用 ModelChoiceField。我们的问题是我们找不到 MultipleModelsChoiceField,它的选择将从B
和上的查询集中填充C
。
如何通过尽可能多地重用现有的 Django 代码来解决这个问题?
python - How to use inverse of a GenericRelation
I must be really misunderstanding something with the GenericRelation
field from Django's content types framework.
To create a minimal self contained example, I will use the polls example app from the tutorial. Add a generic foreign key field into the Choice
model, and make a new Thing
model:
With a clean db, synced up tables, and create a few instances:
So far so good - the relation works in both directions from an instance. But from a queryset, the reverse relation is very weird:
Why the inverse relation gives me again the id from the thing
? I expected instead the primary key of the choice, equivalent to the following result:
Those ORM queries generate SQL like this:
The Django docs are generally excellent, but I can't understand why the second query or find any documentation of that behaviour - it seems to return data from the wrong table completely?
django - 使用 Django Rest Framework 序列化通用关系,并提供写入支持
我有以下模型:
我正在尝试以一种可以通过 API 端点分配内容对象的方式序列化此模型
到目前为止,我已经这样做了:
但是,这是只读的。如果我删除 read_only 参数,我必须为该字段指定查询集。但是,对于这种通用关系,我有许多不同的模型类型。如果我在序列化程序和模型的其他地方指定所有可能的模型类型,我似乎在复制代码。
我还可以通过 object_id 和 content_type 字段设置内容对象,但是当我这样做时会出现错误。
例如:
返回 400 响应 "detail": "JSON parse error - Expected object or value"
如何通过 DRF api 使这个 content_object 可写?
django - Django中显示错误的通用外键必须是内容类型的实例
我有一个以下抽象类
现在有2个类从上面继承:-
现在我想将它们与功能联系起来,所以我创建了以下类:-
但是当我尝试在 shell 命令中创建实例时,在创建映射实例时出现错误
“Mapping.content”必须是“ContentType”实例。
我该如何处理?
python - 如何在 Django 中使用通用外键添加 unique_together
在 Django 中使用 GenericForeign Relations 时,我不确定我做错了还是在处理唯一约束时出现了一些问题。
当我尝试保存对象时(例如在 Admin 中),我收到唯一约束错误(引发 500)表单数据库,但在 Admin (UI) 上没有 ValidationError。
下面是我的代码片段,
我有一个如下的通用关系模型,
而我使用它的另一个模型是,
引发异常:
duplicate key value violates unique constraint "mymodel_targeting_targeting_type_0dff10ee_uniq"
DETAIL: Key (targeting_type, content_type_id, object_id)=(geo, 18, 188) already exists.
我实施它的方式有问题吗?或者某些东西不应该像这样使用?
任何形式的帮助都非常感谢。谢谢
django - Django 1.10:删除具有 GenericRelation 的模型时出错
在我的项目中,我通过第三个模型 ABMapping 使用 GenericRelation 将从 A 类继承的模型映射到 B 类型的模型。
模型.py:
在 Django 管理员中,当我尝试删除 A 的子对象时,我收到错误消息“无法将关键字 u'object_id' 解析为字段。选择是:x、y、id、abmapping。” 似乎它试图从 ABMapping 中获取一个字段,但在 B 中找到它。
如您所见,我将模型精简到最低限度,但问题仍然存在。
即使我删除了 A 的子类的对象的所有 ABMappings,也会出现同样的问题。
StackOverflow 上所有看似相关的问题都与人们抱怨没有发生级联删除有关……但我什至无法进行顶级删除。
这些模型的一切都运行良好一段时间......除了这个从管理员删除的问题,它从一开始就没有工作。我在这里想念什么?
谢谢!
django - Django GenericRelation 与 JSONField
在我的应用程序中,可以将许多不同类型的Record
s 映射到Person
. 在我最初的实现中,我让每条记录都继承自一个抽象基类,并使用GenericRelation
s 来管理整个事情。代码有点复杂,但它可以工作:
模型.py
等等。(正如我试图指出的那样,每种类型Record
都与其他类型完全不同,每种模型的字段都非常不同。)
当我围绕这些模型构建应用程序时,我开始怀疑这种方法是否可以扩展,因为我最终将拥有许多RecordX
-type 类。我开始考虑如何将所有Record
s 放在一个表中,并用一列指示Record
每个表是哪一种,最终发现了 new-ish JSONField
。乍一看,这似乎正是我想要简化整个事情的方法。
所有这一切似乎都很好,直到我意识到通过将模型字段转换为 JSON 属性而失去了多少功能,鉴于 JSON 中的数据是用户输入的,这一功能很重要。
- 我无法轻松验证 JSON 中的数据条目。显然我可以这样
data = JSONField(validators=[something???])
,但据我所知,这个实现并不适合validator
依赖于值的情况Record.type
。 - 即使我能弄清楚这一点,我也会失去各个字段的干净管理界面。是的,我想我可以使用自定义保存功能制作自定义表单,但这似乎相当麻烦。
所以——我正在寻找这种情况下最好的架构的洞察力,在不使代码库不必要地复杂化的情况下平衡性能。或者,对于这种情况我不知道还有其他方法吗?
(我知道这不是理想的 StackOverflow 问题,但我希望根据性能和可维护性评估这些(或其他)代码示例使这个问题可以回答,而不仅仅是可以讨论?)
谢谢!
django - 通过 GenericRelation 上的 ForeignKey 进行 Django 查询缓存
使用 aGenericRelation
将 s 映射Record
到Person
s,我有以下代码,它可以正常工作,但是我正在尝试解决一个性能问题:
模型.py
总之,我有:
我的应用程序中的显示逻辑遵循这些关系来显示Person
映射到每个的所有 s RecordX
:
视图.py
问题出在模板中:
模板.html
如前所述,每次我请求与Person
s 相关的 s 时RecordX
,它都会生成一个新查询。我似乎无法弄清楚最初如何预取这些以避免冗余查询。
如果我尝试selected_related
,我会得到一个错误,selected_related
这里没有字段是可能的(错误消息:)Invalid field name(s) given in select_related: 'xxx'. Choices are: (none)
。毫不奇怪,我现在明白了——这个模型上没有任何 FK。
如果我尝试prefetch_related('people')
,不会引发错误,但我仍然会在模板中的每个循环上得到与以前相同的重复查询。同样对于prefetch_related('people__person')
. 如果我尝试prefetch_related('personrecordmapping')
,我会得到一个错误。
按照这个答案,我考虑过尝试模拟一个类似的select_related
东西:
但我不太了解_content_object_cache
如何使这个答案适应我的情况(即使是正确的方法)。
那么 -当页面将显示n 个对象时,如何将所有Person
s预取到RecordX
s 以避免n 个查询? RecordX
谢谢你的帮助!
python - django中的通用关系,带有聚合的查询集
我在模型中使用 django 1.6 和泛型关系。我对aggregate
模型中的功能有疑问:
以下是我的部分观点:
我在这个地方得到一个错误:
错误:
但是数据库中有一个表(我使用 sqlite),其中包含字段:id、content_type_id、object_id、position、is_sale_active、is_cyclic_event_active、cycle_link