• Как при помощи формы поиска вывести в шаблоне количество слов из списка?

    @livnev Автор вопроса
    chemdev,
    Есть модель, в ней храниться текстовый файл, нужно из этого файла достать все слова и к примеру вывести, как сделал я на фото выше, в таблицу со словами, просто что б было нагляднее. А дальше так: есть так же табличка с колонками, в столбце СЛОВО есть форма поиска, а рядом столбец, который будет показывать количество слова, которое было введено в форму поиска из таблицы со словами. Т.е например, из фото выше, вводим в поле поиска слово you и должна отобразиться цифра 2, т.к в списке слов это слово встречается 2 раза.
    Дальше, причем тут ОДИН объект? У меня одна база данных под названием Text, я могу с ней работать как и ListView, так и в DetailView, тут дело в другом, я когда работаю с формой, то ее подключаю к непосредственно модели и дальше делаю, что мне надо, фильтрую, сортирую и т.д, НО тут в итоге, я работаю уже не с БД, а с простым списком слов и я не знаю, как совместить форму и просто список, что бы оно заработало.
    Что касаемо формы с параметром name, то я пробовал использовать в представлении типа all_words.count(form.cleaned_data['name'])
    или в методе def get_queryset(self) такой же код, но не получается.
    Написано
  • Как при помощи формы поиска вывести в шаблоне количество слов из списка?

    @livnev Автор вопроса
    spoiler

    Модель:

    class Text(models.Model):

    file_name = models.FileField(upload_to='gallery/%y/%m/%d/',
    default='', blank=True, null=False, verbose_name='Название файла')

    def __str__(self):
    return f'{self.file_name}'

    class Meta:
    verbose_name = 'Имя файла'
    verbose_name_plural = 'Имя файлов'

    Форма:

    class FileForm(forms.ModelForm):

    class Meta:

    model = Text
    fields = ['file_name']
    labels = {
    'file_name': 'Название документа'
    }

    class ProfileSearchForm(forms.Form):
    name = forms.CharField(label='Поле поиска', required=False)

    Представление:

    class List_Words(ListView):

    model = Text
    form_class = ProfileSearchForm
    template_name = 'test_words/list_words.html'
    context_object_name = 'word'
    allow_empty = True

    def get_context_data(self, *, object_list=None, **kwargs):
    context = super().get_context_data(**kwargs)
    form = self.form_class(self.request.GET)

    my_object = Text.objects.get(id=7)
    with my_object.file_name.open('r') as file:
    lines = file.readline().split()
    all_words = []
    while lines:
    all_words.extend(lines)
    lines = file.readline().split()
    context.update({
    'word': all_words[:10],
    'q': all_words.count(form.cleaned_data['name'])
    })
    return context

    # def get_queryset(self):
    # form = self.form_class(self.request.GET)
    # if form.is_valid():
    # my_object = Text.objects.get(id=7)
    # with my_object.file_name.open('r') as file:
    # lines = file.readline().split()
    # all_words = []
    # while lines:
    # all_words.extend(lines)
    # lines = file.readline().split()
    # all_words = lines
    # return Text.objects.filter(file_name__icontains=form.cleaned_data['name'])
    # return Text.objects.all()

    Шаблон:

    {% extends 'test_words/base.html' %}

    {% block title %} {{title}} {% endblock %}

    {% load static %}

    {% block index_additional %}

    {% endblock %}

    {% block content %}

    Таблица со словами

    Список слов

    {% for i in word %}
    {{i}}
    {% endfor %}


    Слово TF IDF


    Поиск количества слова в списке


    {{q}}


    {% endblock %}
    Написано
  • Как при помощи формы поиска вывести в шаблоне количество слов из списка?

    @livnev Автор вопроса
    Ну и по сути не работает форма поиска, т.к по сути я в коде обращаюсь то не модели, а к списку слов, которые я вытащил из этой модели
    Написано
  • Как при помощи формы поиска вывести в шаблоне количество слов из списка?

    @livnev Автор вопроса
    Михаил Р., день добрый!
    Модель: 6617857357a77662057055.png
    Форма: 661785aaa3f2b119135398.png
    Представление: 661785e22d5c5629654683.png
    Шаблон: 661785f9a1a21826338643.png
    Фронт: 6617860d60bbb981655957.png
    Написано