Я хочу отобразить опции флажков на основе запросов из представления.
Например, это мой текущий код:
представление:
def new_role_task(response, id):
...
query = Query.objects.filter(id=id)
if response.method == 'POST':
form = Form(response.POST)
if form.is_valid():
....
return redirect(f'/...')
else:
form = Form()
return render(response, ...html', {'form':form, ...})
форма:
FAVORITE_COLORS_CHOICES = [
('blue', 'Blue'),
('green', 'Green'),
('black', 'Black'),
]
class Form(forms.Form):
checkbox_fields = forms.MultipleChoiceField(
required=False,
widget=forms.CheckboxSelectMultiple,
choices=FAVORITE_COLORS_CHOICES,
)
...
Вместо FAVORITE_COLORS_CHOICES я хочу использовать запросы, которые я бы сделал из самого представления, которое будет динамическим c в зависимости от параметров, передаваемых на страницу.
Например, Я пришел из Rails и внутри Rails, вы можете выполнить sh это на передней или задней стороне, выполнив:
Front:
<%= collection_check_boxes(:post, :author_ids, Author.all, :id, :attribute) %>
Это будет тогда отобразить все записи из модели Author.
Или вы можете определить Author
как @authors = Author.where(ids: [1,2,3])
<%= collection_check_boxes(:post, :author_ids, @authors, :id, :attribute) %>
Это затем отобразит всех авторов из запроса, который match.
Я предполагаю, что для Django все, что мне нужно сделать, это перевести мой запрос в формат [('')]
, а затем каким-то образом заставить его переопределить файл form.py?
Что такое метод для достижения этой цели?
Я думаю, есть 2 вопроса ... Как получить мой запрос в этом F ormat выше, и как получить это в передний конец?
Или это единственный способ сделать это?
{% for author in authors %}
<div class="form-check"> <input type="checkbox" class="form-check-input" name="author" id="id_author_{{author.id}}" value="{{author.id}}">
<label class="form-check-label" for="id_author_{{author.id}}">
{{ author.name }}
</label>
</div>
{% endfor %}
Конечно, должен быть лучший способ ....