问题标签 [m2m]

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

django - django 视图 - 在通用视图中访问 m2m 字段

我偶然发现了这个问题,我的菜鸟大脑试图解决它。我觉得这里缺少一些基本概念。

所以我有这个带有类别选择字段的“电影”模型和与“导演”模型的 m2m 关系,我正在尝试编写 2 个不同的视图,一个返回按类别过滤的电影列表,另一个返回一个列表导演筛选的电影。第一个很简单,但我只是不知道如何获取导演模型的名称字段来创建第二个过滤器。

所以我有这个模型(我已经去掉了不相关的东西,包括我上面提到的类别)

这个网址

而这个观点

The same template is supposed to be used by both views to render the relevant list of objects The view doesn't like the filter i'm using at the queryset for the m2m field, but I have no clue how to do it really, I've tried whatever I could think of and it gives me a "keyword can't be an expression" error

Any help to this lowly noob will be appreciated.

0 投票
1 回答
821 浏览

django - Django在管理页面上以多对多关系显示更多字段

我有一个页面构建模型,它有一个 manytomanyfield 我想要的只是显示 manytomany 字段模型的其他列

我有一个带有名称和类别字段的图像模型,我希望两者都显示在管理页面上的内联表中,带有过滤器而不是多对多字段。

0 投票
3 回答
95 浏览

mysql - 数据库结构:这个结构可以与这个 m:m 一起使用吗?

这是我的问题:(使用 MySQL)

我有 2 个实体,分别称为“商店”和“客户”。我在“clients”和“shops”之间还有一个名为“clients_shops”(CakePHP 命名约定)的 M:M 表。我这样做的原因是这是一个 SaaS 应用程序,其中“客户”可能有很多“商店”,而“商店”肯定会有很多“客户”。

但是,我不想让商店能够更新/删除“客户”记录,因为真正需要发生的是“商店”将从他们自己的记录中编辑/删除该“客户”,而不是从由“客户”管理的主“客户”表。

无论如何,使用这种结构,“商店”可以在“clients_shops”表上运行查询以获取其客户列表,“客户”可以运行查询以获取其“商店”列表。目前很好...

到目前为止,数据库如下所示:

ORM 看起来像这样:

到目前为止一切顺利(我认为......)但这是我的问题。假设有第三个表名为“trips”。“旅行”表存储有关个人预订的信息,“客户”将借此预订“商店”提供的“旅行”。这就是我的大脑变得糊状的地方。我应该如何建立这种关系?

是这样吗:

或者有没有更好的方法来做到这一点,比如另一个使用clients.client_idAND的表clients_shops.clients_shops_id

在此先感谢所有真正阅读了整本书的人!

0 投票
1 回答
1204 浏览

django - Django 管理员保存不发送带有 m2m_changed 信号的 post_remove 操作

当我保存相关模型时,我正在尝试更新多对多模型。这应该可以使用m2m_changed 信号(它有效!但不是在管理员中?)例如

在 shell 中运行时一切正常。例如,像这样的tests.py:

我得到以下信息(其中“测试”是正在打印的标签名称):

完美的!当我将标签添加到管理员中的条目时,我得到以下信息(在 HTTP 内容之间):

还好!不确定要求什么 pre/post_clear ......以及当我删除时:

啊!pre/post_remove 没有被调用!pre/post_clear 是无用的,它不提供任何主键。这感觉像是管理实现中的一个错误。有什么建议么?

更新:提交并接受了错误 #16073 。

0 投票
5 回答
7408 浏览

python - 使用 Django admin 时未保存 ManyToMany 字段

我遇到了一个奇怪的问题,我希望这里的某个人能够解释一下。

我正在覆盖模型的 save() 方法,以便在运行 super() 后向 ManyToMany-field 添加一些值。我的问题是,当我在 Django admin 中保存时,这些值似乎被添加到关系中,但随后又为空。

但是,如果我这样做,manage.py shell它就没有问题。

我在那里放了两个打印语句,无论我是通过 Django admin 还是通过 shell 运行它,它们都会产生完全相同的输出。

这是print语句的输出:

有没有人对可能导致这种情况的原因有任何建议?

编辑:通过管理界面保存时,Django 似乎丢弃了 save() 中对 m2m 关系的所有手动更改。这与它如何处理表单有关吗?

0 投票
1 回答
365 浏览

django - What is the best (=easiest) way to populate django-textfield with values from other models in the admin-interface?

I am working on a small newsletter-app for a custom-Blog-Django-project (just for me). One main feature of the project is the defined set of Article-Types. All Article-types are children of the abstract base class "Article". Two examples of article-types are "event-article" and "video-article". In the newsletter-app I have a "content"-Field (=email-message). Now I want to choose several articles (of any type) to be included in the newsletter. It may be easier if I just create a function that searches all articles which are not featured in a newsletter yet. Then I would collect all needed information, combine them into a text and set the function as default for the field. But I rather choose the articles by myself. I thought about a m2m-field, but how can I choose some articles (inline in the edit-form of the object) and have the content-field filled with the needed information (like absolute_url or headline) immediately? Thanks for your help in advance.

0 投票
4 回答
7503 浏览

django - Django signal m2m_changed not triggered

I recently started to use signals in my Django project (v. 1.3) and they all work fine except that I just can't figure out why the m2m_changed signal never gets triggered on my model. The Section instance is edited by adding/deleting PageChild inline instances on an django admin form.

I tried to register the callback function either way as described in the documentation, but don't get any result.

Excerpt from my models.py

Am I missing something obvious?

0 投票
2 回答
1934 浏览

django - django-reversion 恢复管理员外的多对多字段

我在我的项目中使用 django-reversion。它工作得很好,除了一件事:我无法获得以前版本的 ManyToMany 字段。但是在 django admin 中它是有效的,而不是在我的代码中。要获得以前的版本,我使用以下代码:

vprod = Version.objects.get_for_date(product, ondate).get_object_version().object

它的工作原理是 m2m 字段,其中“产品”是 Product 类的对象,

我可以得到vprod.name它并返回我需要的东西,但是当我尝试时vprod.elements.all()它只返回当前(最后)版本的列表,即使元素的数量发生了变化。

0 投票
1 回答
165 浏览

hibernate - 有效地更新休眠实体之间的关系

我在两个休眠实体之间有 m2m 关系,我们称它们为电影和演员,我已经设置了双向链接。显然,这被建模为电影表和演员表,以及数据库中两者之间的外键连接表。

UI 允许您更新演员和电影之间的关系。在内部,UI 使用所涉及的电影和演员的 ID 跟踪您的屏幕更新,然后在您点击“保存”时将带有演员 ID 列表的电影 ID 发送到控制器。

现在我的问题是:假设我通过在数据库中添加四个演员来更新电影。我有要添加的演员 ID 列表,但我没有实际的演员对象,因为我只从 UI 收到了他们的 ID。

要进行此更新,我是否需要填充四个成熟的 Actor 对象只是为了将它们添加到我的 Movie 对象,以便我可以将其存储回数据库?换句话说,我是否需要先从我的数据库中进行选择才能进行更新?进行额外的选择调用似乎效率低下,因为真正要更新的只是向连接表添加一些行,而且我已经拥有了执行此操作所需的所有信息。

因此,hibernate 是否提供了一种方便的方法来直接将键添加到连接表本身(无需编写自定义的原始 sql 查询)?

0 投票
1 回答
86 浏览

django - 在 Django 中,我怎样才能有一个可以指定 m2m 关系两侧中的任何一个的表单?

我有一个类似于以下的模型:

我想创建/拥有一个表单(ModelForm?),我可以在其中指定output_edgesinput_edges(或什至两者)并且它们将被正确存储。默认情况下,上述模型的表单仅在 POST 包含output_edges值时才有效。但不是input_edges