如何使用 Django 中另一个模型的主键获取条目?

Posted

技术标签:

【中文标题】如何使用 Django 中另一个模型的主键获取条目?【英文标题】:How to get entry using primary key from another model in Django? 【发布时间】:2021-04-30 04:32:52 【问题描述】: 我有 2 个模型,“Listing”和“Watchlist”。 Watchlist 有一个引用列表的主键。 对于每个“监视列表”对象(具有相同的用户 X),我想以 QuerySet 的形式获取相应的“列表”条目。 我真的很挣扎,因为我不知道如何将 for 循环合并到查询集请求中。
class Watchlist(models.Model):
    listing = models.ForeignKey(Listing, on_delete=models.CASCADE, related_name="watchlists")
    user = models.ForeignKey(User, on_delete=models.CASCADE)

【问题讨论】:

我不太明白你打算做什么,你的表格在哪里?为什么要循环?请解释一下。 查看***.com/questions/5437335/… 【参考方案1】:

由于listing 字段有related_name="watchlists",我们可以像这样使用related_name 进行过滤:

Listing.objects.filter(watchlists__user = X) # X is a user instance.

请注意,__ 用于字段查找。 __user 用于用户字段查找。

如果listing字段没有任何相关名称,我们可以使用模型名称(Watchlist)和_set过滤到引用模型。

Listing.objects.filter(Watchlist_set__user = X) # X is a user instance.

【讨论】:

虽然此代码可能会为问题提供解决方案,但最好添加有关其工作原理/方式的上下文。这可以帮助未来的用户学习并将这些知识应用到他们自己的代码中。在解释代码时,您也可能会以赞成票的形式从用户那里获得积极的反馈。

以上是关于如何使用 Django 中另一个模型的主键获取条目?的主要内容,如果未能解决你的问题,请参考以下文章

Django:如何在urlpatterns中访问其他模型的主键?

如何在 Django 中创建一个包含两个字段的主键?

如何获取使用 django bulk_create 创建的对象的主键

在 SQL 脚本中引用生成的主键

Django框架:模型 定义属性

19 01 18 dango 模型