gpt4 book ai didi

python - 我无法从 Django 中的模板访问相关字段,但它可以在 shell 中工作,我做错了什么?

转载 作者:太空宇宙 更新时间:2023-11-03 17:19:08 25 4
gpt4 key购买 nike

编辑:在底部添加模型类。

我有这个 View 代码,它从 Django 表单获取输入并使用它在数据库中搜索值。

class SearchResults(generic.FormView):
template_name = 'search_results.html'
context_object_name = 'submissions'
form_class = SearchForm
model = Submissions

def get_context_data(self, **kwargs):
context = super(SearchResults, self).get_context_data(**kwargs)
level = self.request.GET['level']
media_type = self.request.GET['media_type']
tags = MajorTags.objects.filter(
tag__icontains=self.request.GET['search'])
tag_ids = [t.id for t in tags]
context['results'] = Submissions.objects.filter(
tags__id__in=tag_ids,
level__contains=level,
media_type__contains=media_type)
return context

然后最终由该模板呈现。

{% extends "base.html" %}

{% block content %}
<form action="{% url 'search_results' %}" method="get" class="global-search">
{% csrf_token %}
{{ form }}.
<input type="submit" value="Go" />
</form>
<ul>
{% for resource in results %}
<li> <a href="/resources{%url 'resource' resource.id%}"> {{resource.url}} </a> {{resource.stats_set}}
</li>
{% endfor %}

</ul>
{% endblock %}

问题是 {{resource.stats_set}} 在模板中没有返回任何内容。 (确切的输出是 doc_sub.Stats.None。)但是,当我在 shell 中运行以下代码时,我得到了我正在寻找的结果。

from doc_sub.models import MajorTags, Submissions
tags = MajorTags.objects.filter(tag__icontains='Theology')
tag_ids = [t.id for t in tags]
level = 'Introductory'
media_type='HTML'
context = Submissions.objects.filter(tags__id__in=tag_ids, level__contains=level, media_type__contains=media_type)
for i in context:
print i.stats_set.values()

以下是必要的模型:

class Submissions(models.Model):
LEVEL = (
('Introductory', 'Introductory'),
('Intermediate', 'Intermediate'),
('Academic', 'Academic'),
)

MEDIA_TYPE = (
('HTML', 'HTML'),
('PDF', 'PDF'),
('Video', 'Video'),
('Other', 'Other'),
)
id = models.AutoField(primary_key=True)
url = models.URLField(unique=True)
tags = models.ForeignKey(MajorTags, default=0)
level = models.CharField(choices=LEVEL, max_length=25)
media_type = models.CharField(choices=MEDIA_TYPE, max_length=25)

def __unicode__(self):
return self.url
class Stats(models.Model):
url = models.ForeignKey(Submissions)
id = models.AutoField(primary_key=True)
avg = models.FloatField(default=0)
std_dev = models.FloatField(default=0)

def __unicode__(self):
return self.url.url + " " + str(self.avg)

最佳答案

嗯,我明白了。如果我很聪明并且使用 RTFM,我可能会更快地弄清楚这一点,但是,我试图以错误的方式访问该值。我正在这样做: print t.stats_set.values()[0]['avg'] 就像我在正常的 python 上下文中访问值一样,但我需要这样做: 资源.stats_set.values.0.avg

关于python - 我无法从 Django 中的模板访问相关字段,但它可以在 shell 中工作,我做错了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33353491/

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