2016-05-18 8 views
0

Ich habe eine Seite erstellt, auf der Benutzer eine Bestellung aufgeben können. So können sie einige Felder wie Beschreibung, Notizen etc. einschließlich "Sprache", die ein Feld von formset ist.Wie ID für Formular in Django festlegen?

Also in meinem view, gibt es eine job_creation_form die fast alle Felder enthält, dann ein es Formset von Language Formen besteht.

Ich möchte JQuery validate Plugin verwenden, um Felder zu validieren, ohne die Seite zu aktualisieren. Das Problem ist, dass ich eine form Markierung in HTML sehen kann, die id nicht hat. Wie stelle ich die id ein?

enter image description here

def create_order(request): 
    LanguageLevelFormSet = formset_factory(LanguageLevelForm, extra=5, max_num=5) 
    language_level_formset = LanguageLevelFormSet(request.POST or None) 
    job_creation_form = JobCreationForm(request.POST or None, request.FILES or None) 

    context = {'job_creation_form': job_creation_form, 
       'formset': language_level_formset} 

    if request.method == 'POST': 
     if job_creation_form.is_valid() and language_level_formset.is_valid(): 
      cleaned_data_job_creation_form = job_creation_form.cleaned_data 
      cleaned_data_language_level_formset = language_level_formset.cleaned_data 
      for language_level_form in [d for d in cleaned_data_language_level_formset if d]: 
       language = language_level_form['language'] 
       level = language_level_form['level'] 
       job = Job(
         customer=request.user, 
         text_to_translate=cleaned_data_job_creation_form['text_to_translate'], 
         file=cleaned_data_job_creation_form['file'], 
         short_description=cleaned_data_job_creation_form['short_description'], 
         notes=cleaned_data_job_creation_form['notes'], 
         language_from=cleaned_data_job_creation_form['language_from'], 
         language_to=language, 
         level=level, 
       ) 
       job.save() 
      return HttpResponseRedirect('/order-success') 
     else: 
      print job_creation_form.errors 
      print language_level_formset.errors 
      return render(request, 'auth/jobs/create-job.html', context=context) 

    return render(request, 'auth/jobs/create-job.html', context=context) 
+3

Ich bin mir nicht sicher, was Ihr Problem ist. Warum brauchen Sie eine ID, anstatt nur $ ("form") auszuwählen, wenn es nur ein Formular gibt? Wenn Sie wirklich einen benötigen, geben Sie ihm in der Vorlage eine ID an. – raphv

Antwort

1

In Django django.forms.Form befasst sich nur mit den internen (d Felder, Validierung, Speicherung) Teile einer Form, nicht irgendwelche Details der Vorlage im Zusammenhang (Senden-Schaltflächen, Aktionen, Methode).

Deshalb ist, wenn Sie ein Formular in einer Vorlage machen, es ist wie:

{% extend base.html %} 
{% block content %} 
<form action='' method='post'> 
{{ form }} 
</form> 
{% endblock %} 

Wenn Sie möchten, dass Sie eine ID-Eigenschaft auf dem Formular und greifen Sie in der Vorlage wie <form ... id='{{ form.id }}'> gesetzt, oder einfach nur setzen eine ID auf dem Formular.

Verwandte Themen