问题标签 [django-related-manager]

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 回答
780 浏览

django - 在Django模板中循环相关模型的孩子

我有一个公司的模型。然后我有一个公司职位的基本模型。它包含常见的帖子属性。属性是发布帖子的公司。它指的是带有 ForeignKey 的 Company 模型。最后,我有一个用于 A 类型帖子的子模型(基于 CompanyPost 基本模型):

在模板中,我想循环访问特定公司发布的 A 类帖子。
我尝试了这些变体:

1)

2)

我尝试了上述的其他子变体。似乎没有一个工作。
我知道我可以轻松地在视图中准备集合,例如:

并将 postsA 传递给模板上下文,但我想知道是否有办法在模板中循环相关模型的子项。
(注意:遍历 companyposts 是可行的。但我当然会收到所有类型的帖子,比如 postB 等:

这就是为什么我尝试上面的变体 2)再次循环结果。)
提前谢谢你。

更新:谢谢大家的回答。我明白,通过选择模型继承,我选择了一个复杂的解决方案。在本文中,我询问是否可以在模板中显示相关模型的子项。为了不混淆问题,在这个问题中我解释了为什么我使用具体的模型继承并询问什么是更好的解决方案。

0 投票
1 回答
662 浏览

python - 如何强制 django 模型保存方法在自定义管理器方法中查找查询集?

我有一个名为 Run 的模型,带有一个名为 RunManager 的管理器和一个自定义的 save() 方法,如下所示。

这是一个旧代码,其中在多个位置使用了 run.objects,因此为了隐藏存档的运行,我使用了 RunManager。一切正常,但现在我们要取消归档运行。所以我添加了 unfiltred_runs() 方法,它显示了所有运行的列表以及存档的运行。但是当我运行 recove_archived() 方法时,我得到以下错误

我知道错误是因为数据库将其视为具有相同 ID 的新条目。我知道我可以完全覆盖 save 方法,但我想避免这种情况。

那么有没有办法在 unfiltered_runs() 查询集中而不是常规查询集中进行保存方法查找。

0 投票
1 回答
1569 浏览

django - Django 使用父对象获取相关子对象

我正在使用 Django 2.2,并且我有一个包含两个类ProductProductRevision. 当我检索一个ProductProducts 列表时,我总是获取相应的ProductRevision. ProductRevision对象是递增的,只有最后一个版本应该用Product.

我试图添加一个属性current_item来获取给定产品的最新版本。虽然这是有效的,但效率非常低,因为当我在模板中使用它时,每次显示相关的字段时它都会访问数据库ProductRevision

我根据旧版本的 Django ( Fetch latest related objects in django ) 找到了这个答案,我想知道当前版本的 Django 是否没有其他方法可以达到相同的结果?我对在我的模型中实现这一点特别感兴趣。

0 投票
1 回答
632 浏览

python - 覆盖相关字段的 Django Admin 的“添加”按钮

我一直在尝试覆盖 Django admin 中相关字段的 +(add) 按钮的功能,以打开新选项卡而不是弹出窗口。我查看了RelatedObjectLookup.js以了解它是如何工作的,但仍然坚持通过打开一个新选项卡来实现相同的功能。有没有办法实现这样的事情或呈现表单'内联'?

0 投票
1 回答
115 浏览

django - Django:从一对多关系访问数据的正确方法?

我在通过 django 一对多关系访问数据时遇到问题。经过 3 天的艰苦努力,我找到了一种通过覆盖 get_context_data 方法来显示关系数据的方法。我想知道这是否是正确的方法。这可行,但我可以想象有一种更好的方法可以做到这一点,而我在文档中错过了。

这是代码:

这是模型的代码:

这是我模板中的代码:

0 投票
1 回答
130 浏览

python - filter django queryset:查询对象有两个或多个具有某个相同字段值的反向相关对象

假设我们有两个这样的模型:

如果我想获得一个查询集,该查询集ModelA包含那些有两个或多个指向它们且具有相同值的对象,我该怎么办? b_modelssome_field

考虑这个示例设置:

在这个例子中,查询集应该包含 object a1,因为 objects都b1b2它相关,并且都具有fooin的值some_field。(并且包含a2,因为它不满足第二个要求。)

我知道我可以使用.annotate(models.Count('b_models'))然后.filter(b_models__count__gte=2)从. 但在本例中,这将返回和。如何满足第二个要求并进一步过滤查询集?ModelAModelBa1a2

(或者有比我的annotate条款更好的整体方法吗?)

编辑:澄清一下,我不需要知道具体的价值是什么some_field。第二个要求很简单,ModelB实例的值相同some_field。所以如果我要添加

那么查询应该同时返回a1a2

0 投票
1 回答
858 浏览

python-3.x - 如何在 Django Rest Framework 上显示多对多模型关系变量的值

我是 django 的新手并且正在苦苦挣扎,我查看了谷歌但找不到任何可以提供帮助的东西。

这是我的模型:

这是我的 serializer.py :

当我评论meal = MealSerializer(read_only=True,many=True) 行时,它将输入显示为table_id 和meal,其中meal 值为Meal Object (1), Mean Object (2) ...。

我的问题:

  1. 如何显示膳食对象值而不是将其显示为对象。
  2. 如何在我的视图/序列化程序中使用 total_price 方法。
  3. 如何查看流程,例如它如何从哪个类流向哪个类调用,以及我收到的结构的类型和值是什么。

谢谢。

0 投票
0 回答
567 浏览

python - 覆盖 Django RelatedManager 和 Queryset 以过滤通过模型中的字段

我有两个模型通过第三个模型通过多对多字段链接。Through 模型中有一些额外的字段。我想覆盖 RelatedManager 以生成一些自定义查询集,这些查询集使用通过模型中的额外字段。需要注意的是,我的通过模型是使用定义额外字段的子类/mixin 创建的。我想要做的是获取与 SampleBatch 相关的所有 Gene 对象,这些对象在链接多对多字段的 SampleBatchGene 实例中具有 1 的活动状态:

这是我到目前为止所拥有的:

尝试使用自定义反向管理器(根据文档)会出现以下错误:

编辑:Willem Van Onsem 提示:它正在尝试使用来自 的自定义管理器Gene,但我已针对SampleBatchGene. 所以我需要弄清楚如何从 Through Model 中指定自定义管理器。我曾希望通过 来完成这项工作,LinkMixin这样我就不必在Many-To-Many. 我想我可以将自定义管理器粘在两者上SampleBatchGene让它工作,但我有很多这种类型的关系使用LinkMixin作为直通模型,所以希望以某种方式避免它。

0 投票
1 回答
1611 浏览

python - TypeError:禁止直接分配到相关集合的反面

我有一个 Django 模型“餐厅”,它有一个字段 parent_rest_id,它指的是保存在同一张表中的父餐厅。

现在,当我尝试使用 Model.objects.create(**dict) 为其创建一行时。

我收到此错误“TypeError:禁止直接分配到相关集的反面。请改用 parent_id.set()。”

我确保 parent_id 是 Model Restaurant(Restaunt.objects.get(id=1)) 的实例

请让我知道我做错了什么或者我创建了我的模型错误,我是 django 的新手。

PS:我没有任何定制的序列化程序或模型管理器,DefaultColumns 是继承自 model.Models 的父类

0 投票
2 回答
1264 浏览

django - 添加或更改相关名称参数

姜戈:3.0.6

下面是我尝试为管理员组织标签和标签(使用 django-taggit)。

这给出了以下错误:

文档(不确定这里是否有任何帮助):https ://django-taggit.readthedocs.io/en/v0.10/custom_tagging.html

我该如何应对这个问题?