проверить, не заполнено ли поле формы в шаблонах - PullRequest
0 голосов
/ 09 февраля 2012

О проблеме: - У меня есть поле формы, названное темами, которое является множеством полей. Теперь в шаблоне я звоню как {{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.

Заранее спасибо ..

1 Ответ

2 голосов
/ 09 февраля 2012

Я бы предложил вам рассчитать длину переменной

forms.topics

по вашему мнению и просто используйте эту переменную в шаблоне как

{% if not forms.topic or variable <= 1 %}
    <td>Whatever you want to display</td>
{% else %}
    <td> {{ forms.topic }} </td>
{% endif %}

Этот код проверяет, нет ли значения в "forms.topic" или длина переменной (которую вы вычислили в своем представлении) меньше или равна 1. Напечатайте текст, который вы хотите отобразить.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...