【发布时间】:2018-08-17 09:19:18
【问题描述】:
我刚开始使用 Django,目前停留在一个看似简单的要求/行为上。我想要一个基于类的 ForeignKey 过滤的条目集呈现的页面,并从该其他类的呈现视图中调用。
我的 model.py 的简化版本是:
from django.db import models
class BookDay(models.Model):
bookdate = models.DateField()
bookevent = models.CharField(max_length=255)
class BookTime(models.Model):
booktime = models.TimeField()
bookdate = models.ForeignKey(BookDay, on_delete = models.CASCADE)
我的 view.py 内容如下:
from django.http import HttpResponse
from django.views import generic
from .models import BookDay, BookTime
class DayView(generic.ListView):
template_name = 'booking/days.html'
context_object_name = 'bookdate_list'
def get_queryset(self):
return BookDay.objects.order_by('bookdate')
class TimeView(generic.ListView):
model = BookDay
template_name = 'booking/booktimes.html'
context_object_name = 'booktimes_list'
def get_queryset(self):
return BookTime.objects.filter(bookdate=bookday_id).order_by('booktime')
我的 urls.py 包含:
from django.urls import path
from . import views
app_name = 'booking'
urlpatterns = [
path('', views.DayView.as_view(), name='bookdays'),
path('<int:pk>/', views.TimeView.as_view(), name='booktimes'),
]
引用的 days.html 为每个片段呈现一组链接:
{% for entry in bookdate_list %}
<li><a href="{% url 'booking:teetimes' entry.id %}">{{ entry.bookevent }}</a></li>
{% endfor %}
单击任何生成的链接时,失败显示为name 'bookday_id' is not defined。
我可以在上面的views.py 中放置一个固定整数来代替bookday_id,它可以正常工作(显然,仅适用于那个ForeignKey)。另外,我已经广泛使用了 filter() 参数名称、相关的 url 和 html,但无济于事。
我应该如何对其进行参数化以获取点击的链接并正确过滤 BookTimes 条目?我应该为此使用 Django-filter,还是可以在 Django 中本地完成?
【问题讨论】:
标签: python django django-filter