【发布时间】:2018-03-01 14:15:33
【问题描述】:
所以基本上我想要做的就是使用带有 pk 的生成链接:
让我们说127.0.0.0:8000/27/
通过 if 语句访问该 pk 以在另一个模板中使用它 例如:
{% for book in Books %}
{% if book.pk == category.pk %}
<!-- Generate some HTML here-->
在我的项目中,我通过将对象的 pk 作为变量传递来生成链接,例如:
{% for category in Categories %}
<a href="{{ category.pk }}">
在我的主要 urls.py 中:
...
path('<int:pk>/',v.BookList.as_view(slug="pk")),
...
在我的 app/views.py 中:
class BookList(LoginRequiredMixin, ListView):
login_url = 'accounts/login/'
template_name = 'ListsViews/BookList.html'
model = Book
context_object_name = "Books"
slug = "pk"
def get_object(self, queryset=None):
return queryset.get(slug=self.slug)
在 app/models.py 中
class Category(models.Model)
book_name = models.CharField(
max_length=10,
default=_lazy('Tech'),
choices=Grade
)
class Book(models.Model)
category = models.ForeignKey(Category, on_delete=models.CASCADE)
book_name = models.CharField(
max_length=10,
default=_lazy('Learn Python'),
choices=Grade
)
【问题讨论】:
-
您的问题令人困惑。写
{% if book.pk == category.pk %}没有意义。仅仅因为一本书和一个类别具有相同的主键并不意味着它们是相关的。 -
我的意思是,只有当它来自那个“类别”时才想将“书”添加到列表中,问题是类别列表是一个不同的模板,而书籍是另一个,所以我虽然我可以比较 ID 以确保这本书属于该类别。
-
我们无法判断一本书如何链接到某个类别,因为您没有展示您的模型。
标签: django django-models django-templates django-views