Python3/Django-QuerySet未更新
我正在创建一个允许创建事件的网站,这些事件将显示在主页和事件列表上,以便人们可以单击事件查看其描述,以及在事件中进行登记。我在获取类中的查询集以在添加新事件时更新时遇到问题 所以这个功能是为我们的主页。每次返回页面时,查询集都会更新,因此添加新事件时,它会显示在此页面上Python3/Django-QuerySet未更新,python,django,django-queryset,Python,Django,Django Queryset,我正在创建一个允许创建事件的网站,这些事件将显示在主页和事件列表上,以便人们可以单击事件查看其描述,以及在事件中进行登记。我在获取类中的查询集以在添加新事件时更新时遇到问题 所以这个功能是为我们的主页。每次返回页面时,查询集都会更新,因此添加新事件时,它会显示在此页面上 def index(request): num_future_events = Event.objects.filter(date__gte=today).filter(approved=True).count()
def index(request):
num_future_events = Event.objects.filter(date__gte=today).filter(approved=True).count()
query_set = Event.objects.filter(date__gte=today).filter(approved=True).order_by('date', 'time')[:3]
context = {
'num_future_events': num_future_events,
'query_set': query_set
}
return render(request, 'index.html', context=context)
这是我网站上事件列表页面的一个类。它使用一个查询集,但由于该类只被调用一次,因此该查询集只会随着该类的初始化而更新
class EventListView(generic.ListView):
model = Event
query_set = Event.objects.filter(date__gte=today).exclude(approved=False).order_by('date', 'time')[:21]
template_name = 'listPage.html'
def get_queryset(self):
return self.query_set
我希望得到一些帮助,当添加新事件时,EventListView类中的查询集会自动更新,以便显示在此页面上
任何帮助都将不胜感激。如果我们看一下,我们会看到:
或者,如果确实要覆盖get_queryset函数,可以使用:
class EventListView(generic.ListView):
model = Event
template_name = 'listPage.html'
def get_queryset(self):
return Event.objects.filter(
date__gte=today
).exclude(approved=False).order_by('date', 'time')[:21]
或:
Django每次都会在QuerySet中将.all附加到它,以强制重新评估。
class EventListView(generic.ListView):
model = Event
queryset = Event.objects.filter(
date__gte=today
).exclude(
approved=False
).order_by('date', 'time')[:21]
template_name = 'listPage.html'
class EventListView(generic.ListView):
model = Event
template_name = 'listPage.html'
def get_queryset(self):
return Event.objects.filter(
date__gte=today
).exclude(approved=False).order_by('date', 'time')[:21]
class EventListView(generic.ListView):
model = Event
template_name = 'listPage.html'
query_set = Event.objects.filter(
date__gte=today
).exclude(approved=False).order_by('date', 'time')[:21]
def get_queryset(self):
return self.query_set.all()