问题标签 [generic-relationship]

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 投票
1 回答
571 浏览

django - 如何从我的带注释的 Django 查询中过滤/排除非活动评论?

我正在使用object_list通用视图快速列出一组文章。每篇文章都附有评论。该查询使用注释Count()数来注释评论数,然后order_by()使用注释数。

注释是django.contrib.comments框架的一部分,并通过通用关系附加到模型。我在我的文章模型中添加了一个明确的反向查找:

问题是,这会计算“非活动”评论;有is_public=False或的is_removed=True。如何排除任何不活跃的评论?

0 投票
2 回答
1957 浏览

sql - Django 通用关系和 ORM 查询

假设我有以下型号:

查找所有至少附有一张图片的文章的最节省处理器和内存的方法是什么?

我已经这样做了:

哪个有效,但除了丑陋之外,它需要永远。

我怀疑使用原始 SQL 有更好的解决方案,但这超出了我的范围。值得一提的是,上面生成的 SQL 如下:

编辑: czarchaic 的建议有更好的语法,但性能更差(更慢)。他的查询生成的 SQL 如下所示:

编辑:杰瑞特哈迪万岁!这是他的本应显而易见的解决方案生成的 SQL:

0 投票
1 回答
4545 浏览

django - Django 与 Django Admin 的通用关系

我有一个 Django 项目,它有一个“地址”模型。这用于多个地方 - “用户档案”模型,“医院”模型,“机构”模型等。

我正在使用 Django 的通用关系来允许这些对象中的每一个创建地址的外键。

然而,这似乎在 Django Admin 中引起了一些奇怪(或者我可能没有正确理解它是如何使用的)。在 Django Admin 中,如果我尝试创建地址,我会看到“内容类型”和“对象 ID”的字段。如果未填写,模型将不会验证/保存。不知道该放什么。

问题是,我希望能够创建独立的 Address 对象。然后,当我创建用户配置文件或医院时,我可以将它们链接到地址对象,包括多个链接到同一个地址对象的可能性。

我应该如何使用具有通用关系的 Django 管理员?

另外,我还打算使用 django-reversion 对模型进行版本控制,不确定这是否会导致通用关系和管理员出现任何问题?

干杯,维克多

编辑:我应该补充一下,这是我之前发布的地址和内联问题:

Django - 设计模型关系 - 管理界面和内联

根据那里给出的答案,这就是为什么 Address 模型是具有外键的模型。由于普通的 FK 字段只能指向一种类型的对象,这就是我们使用泛型关系的原因。

每个用户/部门/医院等可能(并且在大多数情况下)有多个地址。

同一个地址可以被多个实体使用,但这种情况比较少见,而且在这里重复也可以,我猜,对吧?

所以这将是从用户/部门/医院到地址的一对多。

在那个原始问题中,他们还建议使用抽象类,并为每个需要地址的实体使用不同的地址模型。我仍然不确定这是否是更好的方法,或者是否有办法让 GenericRelations 与我在这里尝试做的事情一起工作。

0 投票
1 回答
1406 浏览

python - Django泛型关系实践

我正在为我的 django-app 开发一个具有基于对象权限的身份验证后端。我使用对象和权限之间的通用关系:

现在我想获取特定组或用户具有特定权限的指定内容类型的所有对象。最好的方法是什么?我应该在应用程序的模型中定义关系的第二端吗?还是更好地编写自定义sql?我正在尝试构建一个通用后端,所以我不希望它依赖于使用它的应用程序。谢谢!

0 投票
2 回答
2612 浏览

python - get_or_create 一般关系在 Django 和 python 调试中一般

我运行代码从这个演示中创建一般相关的对象:http: //www.djangoproject.com/documentation/models/generic_relations/

最初一切都很好:

但是我对我的应用程序感兴趣的用例:

查看其他代码后,我尝试了一堆随机的东西:

或者:

等等

我相信有人可以给我正确的语法,但这里真正的问题是我不知道发生了什么。我使用强类型语言(x86 汇编、C++ 和 C#)开发了十多年,但对 Python 很陌生。当这样的事情发生时,我发现很难理解 Python 中发生的事情。

在我之前提到的语言中,很容易弄清楚这样的事情——检查方法签名并检查你的参数。看了半个小时的 Django 文档,我同样迷失了方向。查看 get_or_create(self, **kwargs) 的源代码也没有帮助,因为没有方法签名并且代码看起来非常通用。下一步是调试该方法并尝试弄清楚发生了什么,但这似乎有点极端......

我似乎在这里遗漏了一些基本的操作原则......它是什么?以后如何自行解决此类问题?

0 投票
3 回答
1392 浏览

django - Django GenericRelation 不保存相关对象的 id - 这是一个错误还是我做错了?

我有一个具有通用关系的模型(称为 A),在创建此对象的实例时,我将另一个模型的实例(称为 B)作为 content_object 字段的初始化程序(通过构造函数的 kwargs)传递。

如果我在创建 A 之前不保存 B,那么在保存 A 时 content_object_id 将作为 NULL 保存到数据库中。如果我在将 B传递给 A 的构造函数之前保存它,那么一切都很好。

这不合逻辑。我假设在执行 A.save() 时会获取相关对象 (B) 的 ID,如果 B 尚未保存但它只是默默地失败,它应该抛出某种异常。我不喜欢当前的解决方案(预先保存 B),因为我们还不知道我是否总是愿意保留该对象,而不仅仅是废弃它,并且还有性能考虑 - 如果我要添加一些其他数据怎么办并在不久后再次保存。

假设我们这样做:

当然我可以这样做,但它不会改变任何东西:

我的问题是 - 这是我应该报告的 django 中的错误还是我做错了什么。GenericRelations 上的文档并不完全冗长。

0 投票
0 回答
227 浏览

django - 在 django 中跨通用关系排序

例如:

给定一个容器,是否可以跨通用关系按字段对“单元”进行排序?

0 投票
1 回答
1559 浏览

django - 如何遍历 Django 模板中的通用关系?

我想在我的 Django 模板中遍历泛型关系,类似于如何遍历 FK 关系。

模型.py

这在我的模板中似乎不起作用:

任何帮助表示赞赏。

0 投票
1 回答
217 浏览

django - 如何使用通用关系检索与模型关联的所有项目?

我在尝试学习 Django 时正在制作一个基于浏览器的小型游戏。我有很多模型都可以有与之关联的“项目”。

这是可以包含项目的模型之一:

我的 Item 类具有通用关系,因此它可以与我需要包含项目的任何模型相关联。它还具有用户的 ForeignKey,因为每个项目都必须由用户拥有:

我的问题是如何获取当前与银行关联的项目列表(或我的任何其他可以拥有项目的模型)?

使用泛型关系是实现此目的的好方法吗?使用多对多关系来做这样的事情会更容易(甚至可能)吗?

我想避免在我的模型中使用可以包含项目的实际 GenericRelation 字段,因为如果我删除了项目,它将删除模型。这个想法是项目是临时的,但具有项目的模型是永久性的。

感谢您花时间阅读和回答!

0 投票
3 回答
1963 浏览

python - 在 django rest 框架中按名称在通用关系中设置内容类型

我现在可以将数据发布到如下所示的视图集:

唯一困扰我的是前端必须知道内容类型 ID

相反,我希望能够将 content_types 名称(如“用户”)发布为 content_type,并让后端确定 id。