Форум программистов, компьютерный форум, киберфорум
Python: Django
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
0 / 0 / 0
Регистрация: 30.05.2018
Сообщений: 1

Formset таблица с чекбоксами

11.05.2022, 16:00. Показов 940. Ответов 0
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день.
Было необходимо создать таблицу расписания. В данной таблице столбцами выступают даты занятий, строками соответственно спортсмен. Саму таблицу я создал, но встретился с проблемой: при добавлении нового спортсмена и добавления новой даты чекбокс встает в самый первый столбец (смотри скриншот). Как сделать привязку ячейки к столбцу?
Файл views.py
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
user = Sportsman.objects.filter(group_id=group_id)
        groups = Group.objects.filter(trainer=request.user.trainer)
        enddate = datetime.today() + timedelta(days=7)
        startdate = datetime.today() - timedelta(days=7)
        stat = Statistic.objects.filter(user__group__exact=group_id,
                                        day__range=[startdate, enddate]).order_by("day")
        group = Group.objects.get(pk=group_id)
        formset = modelformset_factory(Statistic, form=CreateStat, extra=0)
        days = (
            Statistic.objects.filter(day__range=[startdate, enddate])
                .values('day')
                .annotate(count=Count('id'))
                .values('day')
                .order_by('day')
                .filter(count__gt=1)
                .values_list('day', flat='true')
        )
 
        if request.method == 'POST':
 
            if request.POST.get("form_type") == 'date':
 
                for pers in user:
                    data = request.POST.copy()
 
                    data['user'] = pers
                    form_date = CreateDate(data, request.FILES)
 
                    if form_date.is_valid():
                        Statistic.objects.create(**form_date.cleaned_data)
                    else:
                        print(form_date.errors)
            elif request.POST.get("form_type") == 'create':
 
                formset = formset(request.POST, request.FILES,
                                  queryset=Statistic.objects.filter(user__group__exact=group_id,
                                                                    day__range=[startdate, enddate]).order_by("day"))
                if formset.is_valid():
                    formset.save()
                else:
                    print(formset.errors)
 
        form_date = CreateDate()
        formset = modelformset_factory(Statistic, form=CreateStat, extra=0)
        formset = formset(
            queryset=Statistic.objects.filter(user__group__exact=group_id,
                                              day__range=[startdate, enddate]).order_by("day"))
        context = {
            "stat": stat,
            "pers": user,
            "form": form_date,
            "form_create": formset,
            "groups": groups,
            "group":group,
            "days": days,
        }
 
        return render(request, 'lk/statistic_group.html', context)
Файл models.py:

Python
1
2
3
4
5
6
7
8
9
10
11
class Statistic(models.Model):
    user = models.ForeignKey('Sportsman', null=True, verbose_name='Спортсмен', on_delete=models.CASCADE)
    day = models.DateField(verbose_name='Дата', blank=True, null=True)
    status = models.BooleanField(default=False, verbose_name='Посещение')
    class Meta:
        verbose_name = 'Посещаемость'
        verbose_name_plural = 'Посещаемость'
        ordering = ['day']
 
    def __str__(self):
        return str(self.user)
И сам файл шаблона:

HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
<div class="content-wrapper">
    <div class="content-header sty-one">
      <h1 class="text-black">Посещаемость</h1>
    </div>
<div class="content">
      <div class="info-box">
        <h4 class="text-black">Посещения</h4>
        <div>
          <form method="post" id="date">
          {% csrf_token %}
            <input type="hidden" name="form_type" value="date">
          {{form.as_table}}
            <input type="submit" class="btn btn-success" value="Добавить дату">
          </form>
        </div>
      <div class="table-responsive">
          <table class="table">
            <thead>
              <tr>
                <th scope="col">Спортсмен</th>
                {%for days in days%}
                  <th scope="col">{{days}}</th>
                 {%endfor%}
              </tr>
            </thead>
            <tbody>
            <form method="post">
              {% csrf_token %}
                <input type="hidden" name="form_type" value="create">
                {{ form_create.management_form }}
              {%for stat1 in pers|dictsort:'last_name'%}
              <tr>
                <td>{{stat1.last_name}} {{stat1.first_name}}</td>
                    {%for form in form_create%}
                          {%if form.user.value == stat1.pk%}
                            {%for days in days%}
                            {%if form.day.value == days%}
                       <td>
                         <div class="custom-control">
                           {{form.status}}
                         </div>
                       </td>
                {{form.id}} {{form.user}} {{form.day}}
                  {%endif%}
                            {%endfor%}
                            {%endif%}
                    {%endfor%}
                  </tr>
                {%endfor%}
              <td><input type="submit" class="btn btn-success" value="Сохранить"></td>
            </form>
            </tbody>
          </table>
        </div>
      </div>
</div>
</div>
Заранее спасибо
Миниатюры
Formset таблица с чекбоксами  
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
11.05.2022, 16:00
Ответы с готовыми решениями:

Django admin formset
который час подряд бьют над капризами руководства... и никак не выходит ... собственно проблема: нужно пронумеровать (визуально цифрами)...

Таблица с чекбоксами и скрытые поля
Доброго дня! Помогите разобраться, не соображу! Есть форма с таблицей(для примера): &lt;form name=&quot;test&quot;...

Как работать с formset в CBV?
Есть форма ProductCreateForm, нужно добавить в неё форму SpeciallyPriceForm. Как я понял, это решается с помощью формсетов. Никак не...

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
11.05.2022, 16:00
Помогаю со студенческими работами здесь

Передача параметров из формы в FormSet (в конструкторе)
Задача: организовать передачу параметров из формы в набор форм с помощью переменных. Из одной формы в другую сделать получилось. Но в...

Как инициализировать formset в админке Django?
Есть две модели: class Post(models.Model): title = models.CharField(max_length=150, db_index=True, verbose_name='Заголовок') ...

Изменение django formset после сохранения
Здравствуйте, Я использовал django-dynamic-formset для динамического добавления форм на странице. Теперь нужно изменять эти формы после...

Djnago: formset c javascript и initial не работают
Доброго времени суток, У меня есть modelform и formset к ней: class GuestForm(ModelForm): car_brand = forms.CharField(label='Марка...

Как в formset сделать выбор формы при загрузке?
vb_dey=messageb(&quot;Выбор формы&quot;+chr(13)+&quot;ДА - form1&quot;+chr(13)+&quot;НЕТ - form2&quot;+chr(13),4+32+0,&quot;&quot;) do case case vb_dey=6 ...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Новые блоги и статьи
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает монорепозиторий в котором находятся все исходники. При создании нового решения, мы просто добавляем нужные проекты и имеем. . .
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение: В этой книге («Подход, основанный на вариантах использования») Ивар утверждает, что архитектура программного обеспечения — это структуры,. . .
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru