Я хочу отобразить таблицу с:
- в строках: дата каждого дня недели (рассчитайте в my views.py)
- по столбцам: выбор пользователя.
Я могу получить значение из моделей и отобразить его:
https://i.imgur.com/TyvI0DH.png
Но когда я смотрю исходный код на странице, я вижу https://i.imgur.com/wY0QC62l.png
Так что, очевидно, он не работает, когда я пытаюсь сохранить выбор пользователя, потому что он обновит только одну дату, например, сегодня, так как я думаю, что есть такой же идентификатор формы.
- Я пытаюсь использовать набор форм, но не могу передать начальное значение в шаблон "selection_template.html" (я пытаюсь использовать приведенный ниже пример, но он не работает, потому что мне нужно отобразить выбор пользователя в зависимости от даты дня недели .
formset = ArticleFormSet(initial=[{'title': "Form %d" % (i+1),
'pub_date': datetime.date.today()} for i in range(10)])
- Я знаю, как отобразить мульти-форму, используя formset, но не знаю, как передать значение в шаблон.
models.py
class MealSelection(models.Model):
user = models.ForeignKey('User', on_delete=models.CASCADE)
date = models.DateField(auto_now_add=True)
salad = models.BooleanField(default=False)
meal = models.BooleanField(default=False)
sandwich = models.BooleanField(default=False)
forms.py
class GetUserMeal(forms.ModelForm):
class Meta:
model = MealSelection
fields = ['meal', 'salad', 'sandwich']
widget = forms.CheckboxInput(
attrs={
'name': 'choices'
}
)
views.py
for day in weekDay:
try:
userSelection = MealSelection.objects.get(user=u1,date=startWeek + datetime.timedelta(days=daysCount))
userSelection = {'meal':userSelection.meal, 'salad':userSelection.salad, 'sandwich':userSelection.sandwich}
except:
userSelection = {'meal':False, 'salad':False, 'sandwich':False}
userSelection = forms.GetUserMeal(userSelection)
dateDayCorresp[day] = {'date':startWeek + datetime.timedelta(days=daysCount),'userSelection': userSelection}
daysCount += 1
selection_template.html
<form method="post">
<table class="table table-hover table-bordered vertical-align">
<thead>
<tr class="table-primary">
<th rowspan="2">Jour</th>
<th colspan="3">Repas</th>
</tr>
<tr class="table-success">
<th scope="col">Repas</th>
<th scope="col">Salade</th>
<th scope="col">Sandwich</th>
</tr>
</thead>
<tbody>
{% csrf_token %}
{% for day in dateDayCorresp.items %}
<tr>
<th scope="row" class="table-warning">
{{day.0}} ({{day.1.date}})
<!-- {{day.1.userSelection}} -->
</th>
{% for field in day.1.userSelection %}
<td>
<label>{{ field }}</label>
</td>
{% endfor %}
</tr>
{% endfor %}
</table>
<button type="submit" class="btn btn-primary btn-lg btn-block fixed-bottom" id="buttonSave">Save</button>
</form>