【发布时间】:2021-04-20 19:07:20
【问题描述】:
我有一组模板,它们都以相同的 object_list 开头。第一个 (reviews_list) 显示对象列表中的每个项目。其余的显示基于属性的项目子集:{% if review.library == "Movies" %}。
在我更改 Review 模型之前,这一切正常。 library 以前是 CharField,现在是 ForeignKey,尽管字段的名称没有改变。 reviews_list 仍然可以正确呈现,但所有其他模板都显示为空。我已经尝试了以下两种方法,但一切仍然是空的。
library 的 pk 作为字符串:
{% if review.library == "1" %}
在 library 的 pk 中作为整数:{% if review.library == 1 %}
我在进行迁移之前已经擦除了数据库,然后重新填充,所以应该没有任何奇怪的数据问题。
模板很短,所以把它贴在下面。如何根据 fk 字段的值在模板中显示项目?谢谢
{% extends 'base.html' %}
{% block title %}TV Reviews{% endblock title %}
{% block content %}
<h1 class="jumbotron-fluid">List Of TV Reviews</h1>
{% for review in object_list %}
{% if review.library == 'TV' %} <!-- This is the relevant line -->
<div class="card">
<a href="{% url 'review_detail' review.pk %}"><div class="card-header">
<span class="font-weight-bold">
{{ review.title }}
</span> ·
<span class="text-muted">by {{ review.author }} | {{ review.date }}</span>
</div></a>
<div class="card-body">
{{ review.review_body }}
</div>
{% if user == review.author %}
<div class="card-footer text-center text muted"><a
href="{% url 'review_edit' review.pk %}">Edit</a>
| <a
href="{% url 'review_delete' review.pk %}">Delete</a>
</div>
{% endif %}
</div>
<br />
{% endif %}
{% endfor %}
<div align="center"><a href="{% url 'review_list' %}"><button type="button"
class="btn btn-info">Back to
Main List</button></a></div>
{% endblock content %}
如果相关,以下是模型:
class Library(models.Model):
library = models.CharField(max_length=200)
lib_desc = models.TextField(null=True)
def __str__(self):
return self.library
class Review(models.Model):
library = models.ForeignKey(Library, on_delete=DO_NOTHING,)
title = models.CharField(max_length=200)
review_body = models.TextField(null=True)
date = models.DateTimeField(auto_now_add=True)
author = models.ForeignKey(get_user_model(), on_delete=DO_NOTHING,)
def __str__(self):
return self.title
def get_absolute_url(self):
return reverse('review_detail', args=[str(self.id)])
【问题讨论】:
标签: django django-models django-templates