Django:多对多的反面

2024-05-23 21:51:59 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个名为“服务”的模型,它是“页面”模型的子类。定义如下:

class Service(Page):
    content = RichTextField(null="True", blank="True")
    links = models.ManyToManyField("pages.Page", blank=True, related_name="service_links")

“链接”多对多关系应允许每个服务链接到多个页面(无论它们是否是服务)

我希望能够将这些结果拉入它自己的服务页面(在本例中我将称之为页面A),以便它可以向最终用户显示这些链接。你知道吗

我目前正在使用: related_links = Service.objects.filter(links=request.page.id)但这只适用于指向页面A的页面,而不是页面A的链接。你知道吗

如何反转此筛选器以获取页面上的链接?你知道吗


Tags: 模型true定义链接servicepage页面links
3条回答

对于id为N的页面:

Page.objects.get(id=N).service_set.all()

需要“in”Django查找

related_links = Service.objects.filter(links_in=request.page.id)

结果证明,解决方案比预期的简单得多。你知道吗

related_links = list()
for link in request.page.service.links.all():
    related_links.append(link)

我不完全确定这是一个夹层特定的东西或通用django的东西,但这似乎是工作。你知道吗

相关问题 更多 >