О проблеме: - У меня есть поле формы, названное темами, которое является множеством полей. Теперь в шаблоне я звоню как {{form.topics}}
в div внутри набора полей. Я хочу проверить, пусто ли {{form.topics}}
или его длина <= 1, в этом случае я не хочу отображать набор полей из <code>{{form.topics}} Вот мой код. Я решаю эту проблему с помощью jquery.
forms.py
# Showing only that field to keep code short
class VisitSetupForm(Form):
topics = ModelMultipleChoiceField(
queryset=Topic.objects.filter(reporting=False),
widget=CheckboxSelectMultiple,
required=False
)
Views.py
def setup(request):
if request.user.is_superuser:
form_class = AdminVisitSetupForm
all_topics = True
else:
form_class = VisitSetupForm
all_topics = False
f = form_class(request, data=request.POST or None)
if request.method == "POST":
if f.is_valid():
......so on ....
if request.user.is_superuser:
topics = cd['topics']
else:
topics = set(list(interview.topics.all()) + list(cd['topics']))
next_url = "/visit/confirmation/%s/%s/?next=%s" % (patient.user.id, interview.id, url)
return HttpResponseRedirect(next_url)
if not all_topics:
user = get_user(request)
# checking here if the topics exists for other user
f.fields['topics'].queryset = user.organization.topics
f.fields['interview'].queryset = user.organization.interviews
data['form'] = f
return render_to_response('visit/setup.html', data, context_instance=RequestContext(request))
.html
# calling in html
<fieldset class="step4">
<legend>Step 4 - Topic selection</legend>
<p>Check off any additional topics you want to add to the interview. If you want to
remove a topic from an interview, uncheck it.</p>
<div>{{ form.topics }}</div>
</fieldset>
<script>
if($(".step4 input:checkbox").length <= 0)
{
$(".step4").hide();
}
</script>
{{form.topics}} - список флажков. Я хочу, чтобы флажки отсутствовали ({{form.topics пусто}}) не отображают набор полей
Это достигается с помощью jquery. Я хочу, чтобы что-то вроде {{form.topics.empty}} не отображалось
набор полей step4. Есть ли хороший способ, чтобы я мог удалить этот jquery.
Заранее спасибо ..