python - 如何使用 qyery 返回无在 Django 列表视图上获取外键的名称
问题描述
我想在页面上显示名称categoria
当至少有一个系列时,我可以得到名字。否则,它只会返回任何内容!我正在尝试创建一个新的上下文变量来传递类别名称。但我觉得我做错了什么......而且也很复杂......
categoria
即使没有返回系列,有人可以帮我将名称传递给模板吗?
谢谢...
显示错误
DoesNotExist at /categoria/15
Categoria matching query does not exist.
Request Method: GET
Request URL: http://localhost:8000/categoria/15
Django Version: 3.1
Exception Type: DoesNotExist
Exception Value:
Categoria matching query does not exist.
视图.py
class CatergoriasSeriesView(ListView):
model = Serie
template_name = 'categorias_series_of.html'
paginate_by = 10
def get_queryset(self):
return Serie.objects.filter(categoria=self.kwargs['categoria'])
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context['cat'] = self.kwargs['categoria']
context['cat_name'] = Categoria.objects.get(categoria=self.kwargs['categoria'])
return context
模型.py
class Categoria(models.Model):
categoria = models.CharField(
max_length=200, verbose_name="Nome da categoria", help_text="colocar aqui o texto de ajuda")
class Meta:
verbose_name_plural = "Categorias"
verbose_name = "categoria"
def get_absolute_url(self):
return reverse('series_da_categoria', kwargs={'pk': self.pk})
class Serie(models.Model):
serie = models.CharField(
max_length=200, verbose_name="Série", help_text="colocar aqui o texto de ajuda")
categoria = models.ForeignKey(
Categoria, default=1, on_delete=models.SET_DEFAULT)
HTML 模板
{% if object_list %}
{% for serie in object_list %}
<div>
{% if forloop.first %}
<h1 class="main-header">Categoria: {{ serie.categoria }}</h1>
(...)
{% if object_list|length == 0 %}
Não foi encontrada nenhuma série
{% elif object_list|length == 1 %}
Foi encontrada <span class="destaque">apenas uma</span> série
{% else %}
We have found <span class="destaque">{{ object_list|length }} séries</span>
{% endif %} in category <span class="destaque">{{ serie.categoria }}</span>. </h5>
{% endif %}
</div>
{% endfor %}
{% else %}
<div>
<h1 class="main-header">Categoria: {{ cat_name }}</h1>
(...)
<h5>No series Yet</h5>
</div>
{% endif %}
解决方案
def get_context_data(self, **kwargs):
context = super().get_context_data(**kwargs)
context['cat'] = self.kwargs['categoria']
context['cat_name'] = Categoria.objects.filter(categoria=self.kwargs['categoria'])
return context
模板
<h1 class="main-header">Categoria: {% for name in cat_name %} {{ name }} {% endfor %}</h1>
推荐阅读
- kubernetes - 基于模板动态创建服务
- flutter - 将文本 + 图标组合成一个自动换行的小部件
- c# - Unity C#'将精灵位置设置为鼠标指针'使精灵剪辑通过其他精灵
- hadoop2 - 启动 emr 集群(版本 5.11.0)时出现内部服务器错误,随 hadoop 配置提供
- python - 在python的mayagui中选择参数
- r - 在浏览代码时,我在线性回归代码的自变量中看到了 a:b。这是什么意思?
- javascript - 如何从单个数组对象中的多个数组对象创建数组?
- vba - 程序到大
- java - 通过私有方法返回更新的变量
- laravel - 在 Laravel 网站上需要一个货币转换器