Phase 2 评审修复: P0 min_score+&q=500 (ORM→list 顺序) + P1 场景分页(20/page) + P2 文档同步 + 36 tests
This commit is contained in:
+11
-5
@@ -31,12 +31,18 @@ class ScenarioPage(Page):
|
||||
|
||||
def get_context(self, request, *args, **kwargs):
|
||||
context = super().get_context(request, *args, **kwargs)
|
||||
context["projects"] = (
|
||||
projects = (
|
||||
SkeletonProjectPage.objects.live()
|
||||
.filter(scenarios=self)
|
||||
.prefetch_related("languages", "scenarios")
|
||||
.order_by("-first_published_at")
|
||||
)
|
||||
paginator = Paginator(projects, 20)
|
||||
page = request.GET.get("page", "1")
|
||||
try:
|
||||
context["projects"] = paginator.page(int(page))
|
||||
except (ValueError, EmptyPage):
|
||||
context["projects"] = paginator.page(1)
|
||||
return context
|
||||
|
||||
class Meta:
|
||||
@@ -148,6 +154,10 @@ class ProjectIndexPage(Page):
|
||||
projects = projects.filter(frameworks__slug=framework)
|
||||
if database:
|
||||
projects = projects.filter(databases__slug=database)
|
||||
if q:
|
||||
projects = projects.filter(
|
||||
Q(title__icontains=q) | Q(summary__icontains=q)
|
||||
)
|
||||
try:
|
||||
score_val = int(min_score)
|
||||
if 0 <= score_val <= 30:
|
||||
@@ -156,10 +166,6 @@ class ProjectIndexPage(Page):
|
||||
]
|
||||
except (ValueError, TypeError):
|
||||
pass
|
||||
if q:
|
||||
projects = projects.filter(
|
||||
Q(title__icontains=q) | Q(summary__icontains=q)
|
||||
)
|
||||
|
||||
paginator = Paginator(projects, 20)
|
||||
page = request.GET.get("page", "1")
|
||||
|
||||
Reference in New Issue
Block a user