Перегруппировка форм Django - Как я могу перегруппировать кверисет полей формы, как я бы сделал это в шаблоне?
У меня есть Django форма для модели под названием AvailabilityRequested
, которая имеет ManyToMany с другой моделью под названием Event
.
class Event(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
date = models.DateField(blank=True, null=True)
...
class AvailabilityRequested(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
event = models.ManyToManyField(Event, blank=True)
position = models.OneToOneField(JobPosition, blank=True, on_delete=models.CASCADE, related_name='availability_requested', null=True)
class AvailabilityRequestedForm(forms.ModelForm):
class Meta:
model = AvailabilityRequested
fields = ['event']
def __init__(self, *args, **kwargs):
self.project = kwargs.pop('project')
super(AvailabilityRequestedForm, self).__init__(*args, **kwargs)
self.fields['event'].widget = CheckboxSelectMultiple()
self.fields['event'].to_field_name = "event_name" #event.event_name.name
self.fields['event'].queryset = self.project.jobproject_events.order_by('date')
Я создал форму и она работает нормально, однако теперь я пытаюсь отобразить события в AvailabilityRequestedForm
определенным образом в моем шаблоне, и именно здесь возникает проблема.
Конкретно, моя цель - отобразить события, сгруппированные по дате, как на приложенной картинке.
Изначально мне удалось достичь своей цели, когда я не использовал формы, а просто передавал в шаблон набор дат следующим образом context['dates'] = project.jobproject_events.order_by('date')
и затем использовал следующую логику шаблона
{% regroup dates by date as event_by_date %}
<thead>
<tr>
{% for date in event_by_date %}
<th colspan="{{ date.list | length }}" scope="col" style="border-right: 1px solid black; text-align: center;"> {{ date.grouper }}</th>
{% endfor %}
</tr>
<tr>
{% for date in event_by_date %}
{% for event in date.list %}
<th scope="col" {% if forloop.last %}style="border-right: 1px solid black;"{% endif %}>{{event.event_name.name}}</th>
{% endfor %}
{% endfor %}
</tr>
</thead>
Однако, когда я перешел на использование форм django, тег перегруппировки {% regroup availability_request_form.event by date as event_by_date %}
больше не работает.
Ниже вы можете увидеть обе реализации на странице и увидеть, что регруппа формы не работает, в то время как подход queryset работает!
Идеи?