Я пытаюсь добавить раздел архива на свой сайт, хотя когда я говорю «архив», я имею в виду, что он просто не виден в главном представлении списка, то есть на домашней странице, сайт маленький, а проекты - это небольшие объемы. текст, поэтому пространство и оптимизация никогда не понадобятся. Я использую django -фильтр для поиска проектов по отделам (область в моем коде), и «Архив» не работает как один из отделов. Я пытался использовать исключение в наборе запросов, но, конечно, он просто полностью удаляет все проекты с area = "Archive", так что раздел "Archive" пуст. Как я могу удалить архивные проекты из основного списка, но поиск с помощью фильтра.
Вид:
def project_list_view(request):
project_list = Project.objects.annotate(
display_date = models.Case(
models.When(models.Q(staff_trials__isnull=True) | models.Q(timeline_switch=False), then=models.F('launch')),
models.When(models.Q(staff_trials__isnull=False) & models.Q(timeline_switch=True), then=models.F('staff_trials')),
output_field=models.DateField(),
)
).exclude(area='1').order_by('-slip', 'display_date')
project_filter = ProjectFilter(request.GET, queryset=project_list)
return render(
request,
'project_portal/project_list.html',
{'filter': project_filter}
)
фильтр:
class ProjectFilter(django_filters.FilterSet):
class Meta:
model = Project
fields = ['area', 'user']
Для наглядности у Area есть своя собственная модель с внешним ключом для модели проекта, а отделы просто Записи в базе данных. Приведенный выше код делает то, что я хочу, но, как упоминалось ранее, архивированные проекты становятся недоступными, в то время как я хочу, чтобы они показывали, если в выпадающем списке поиска выбран «Архив».