2016-08-04 6 views
0

In meinem Django-Programm habe ich eine UpdateView, die ein Event-Objekt (eines meiner Modelle) aufnimmt und die Formularfelder mit den Daten des Objekts füllt. Alles funktioniert gut, einschließlich Textfelder, Datumsfelder und Autocomplete-Boxen. Die einzige Sache, die ständig nicht gefüllt wird, ist mein Auswahlfeld: ein Dropdown-Menü mit verfügbaren Assistenten. Aus irgendeinem Grund wird es nie aktualisiert und geht immer auf eine leere Auswahl.Django Widget auswählen, das nicht in UpdateView aktualisiert wird

Von views.py, Schnipsel aus meiner UpdateView abgeleitete Klasse

def get_context_data(self, **kwargs): 
    context = super(SchedulerEditView, self).get_context_data(**kwargs) 
    context['form'] = self.form_class(instance=self.request.user, initial={ 
     'hospital': self.object.hospital, 
     'surgeon': self.object.surgeon, 
     'procedure': self.object.procedure, 
     'date': self.object.date.strftime('%m/%d/%Y %I:%M %p'), 
     'patient': self.object.patient, 
     'requested_assistant': 2, # Why won't this work?? 
     'insurance': self.object.insurance 

Wie Sie sehen können, habe ich versucht, alles manuell einstellen, und ich auch nur eine statische Zahl versucht, dass ich mit einem kannte assoziiert pk im Auswahlfeld, in diesem Fall 2.

von event_form.html, der Teil der Vorlage, die für den Assistenten Teil des Event-Modells:

<div class="row form-entry center"> 
    <span id="requested_assistant" class="">{{ form.requested_assistant }}</span> 
</div> 

Und schließlich, aus der gleichen Datei, die einzige andere mögliche, was ich daran denken kann, stört:

$('#id_requested_assistant').append('<option value="0"selected="selected" hidden>Requested Assistant</option>'); 
    $("#id_requested_assistant").change(function() { 
     if($(this).val() == "0") $(this).addClass("empty"); 
     else $(this).removeClass("empty") 
    }); 
    $("#id_requested_assistant").change(); 

Dieser Ausschnitt wurde entwickelt, um einen Platzhalter des Auswahlfeld hinzuzufügen. Es ist ein hässlicher Workaround, aber es schien zu funktionieren.

Danke für jede Hilfe!

EDIT: ich einen Vorschlag und geänderten views.py dazu versucht:

def get_initial(self): 
    return {'hospital': self.object.hospital, 
      'surgeon': self.object.surgeon, 
      'procedure': self.object.procedure, 
      'date': self.object.date.strftime('%m/%d/%Y %I:%M %p'), 
      'patient': self.object.patient, 
      'requested_assistant_id': 2, # Why won't this work?? 
      'insurance': self.object.insurance, 
      } 

noch kein Glück, obwohl

+1

Die Verwendung von 'requested_assistant_id' wird wahrscheinlich funktionieren. Beachten Sie auch, dass Sie 'get_context_data' hier nicht wirklich überschreiben sollten, sondern [' get_initial'] (https://docs.djangoproject.com/en/1.9/ref/class-based-views/mixin-editing/#django .views.generic.edit.FormMixin.get_initial), da Sie nur benutzerdefinierte Anfangsdaten bereitstellen. –

+0

Ich habe das versucht, und wenn ich nicht (ich habe es oben aktualisiert), es funktioniert immer noch nicht :( –

+0

Können Sie das Formular und das Modell zeigen? –

Antwort

0

mich mit einem Ziegelstein Hit, war es, dass JavaScript-Schnipsel, die mich verkorkste . Ich habe meine Auswahl auf ein jQuery Select2-Widget umgestellt, damit ich eine Platzhalterbezeichnung festlegen konnte. der einzige Grund, warum ich dieses Snippet überhaupt brauchte.

Fall geschlossen!

Verwandte Themen