gpt4 book ai didi

django - 如何在DetailView中引用pk

转载 作者:行者123 更新时间:2023-12-02 08:06:09 25 4
gpt4 key购买 nike

嗨,我确信这有一个简单的解决方案,但我找不到它!必须始终需要它!

为了学习 django,我正在编写简单的应用程序来记录我的学习点。所以我有两个模型:

class Topic(models.Model):
title = models.CharField(max_length=40)

def __unicode__(self):
return self.title

class Meta():
ordering = ['title']


class Fact(models.Model):
note = models.CharField(max_length=255)
topic = models.ForeignKey('Topic')

def __unicode__(self):
return self.note

class Meta():
ordering = ['note']

我有模板和网址,将列出所有主题。

当我看到该列表时,我希望能够单击它[我可以这样做]并拥有该主题以及与其链接的所有事实(尽管外键出现)[技术上是否可以将其描述为过滤查询一组子对象?]我正在使用详细 View 。

网址

 url(r'^(?P<pk>\d+)/$', TopicDetailView.as_view(), name='facts'),

这是详细 View 的代码。我知道它知道 pk,因为当我取出额外上下文过滤器(并且只需使用 .all())时,它会显示正确的页面。但无论我尝试多少种方法,我都无法引用它。我想要这样的东西...

class TopicDetailView(DetailView):
model = Topic
template_name = 'study/topic_facts.html'

def get_context_data(self, **kwargs):
# Call the base implementation first to get a context
context = super(TopicDetailView, self).get_context_data(**kwargs)
# Add in a QuerySet of all the books

context['fact_list'] = Fact.objects.filter(topic='pk')
return context

如果我在模板中添加一些逻辑和过滤器,我就可以做到这一点,但这对我来说似乎不太合适,我觉得我必须能够通过添加正确的额外上下文来轻松地做到这一点。

帮助一些可怜的新手!非常感谢。

最佳答案

'pk' 只是一个字符串。您的意思是 self.kwargs['pk']

但实际上你根本不想这样做。父类(super class)已经将 Topic 对象添加到上下文中:并且您在 Topic 和 Fact 之间建立了关系。可以在模板中遍历这个关系:

{% for fact in topic.fact_set.all %}
...
{% endfor %}

因此您无需重写get_context_data

关于django - 如何在DetailView中引用pk,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24599524/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com