Ich habe erst vor kurzem mit klassenbasierten Ansichten begonnen und bin immer noch ahnungslos, was der richtige Weg ist, den richtigen Dropdown-Wert vorzuwählen.Django UpdateView: Setzen Sie die Dropdown-Menüs auf den ausgewählten Wert
Ich habe eine einfache UpdateView wie folgt aus:
class SomeUpdate(PermissionRequiredMixin, UpdateView):
model = SomeModel
form_class = SomeCreateForm
permission_required = 'app.some_model'
template_name_suffix = '_update_form'
raise_exception = True
def form_valid(self, form):
from_page = self.request.GET.get('from')
if from_page:
self.success_url = self.request.GET.get('from')
else:
self.success_url = "/somewhere/"
return super(SomeUpdate, self).form_valid(form)
Während dies funktioniert und es füllt auch CharFields
usw., Dropdown-Listen bleiben nicht ausgewählten, es ist wirklich unbequem zu bedienen. Was ich möchte, ist, dass das aktuell ausgewählte Feld des Objekts bereits ausgewählt ist, wenn Sie es bearbeiten (UpdateView).
Die verwendete form
ist nur ein Standard ModelForm
mit Feldern definiert. Das Feld selbst ist ein Foreignkey
.
Ich habe versucht, get_initial(self)
usw. zu verwenden, um den Dropdown-Wert festzulegen, aber mit keinem Erfolg.
Der rechte Dropdown-Wert für das angegebene Modell sollte bereits ausgefüllt werden, wenn Sie mit einer Instanz eines Modells arbeiten (was UpdateView tut). Hat die Instanz, die Sie anzeigen, einen gültigen Wert für den angegebenen Fremdschlüssel? – Sayse
Ja, sollte es richtig sein. Ich habe es noch einmal überprüft und kann über diesen auf den ausgewählten Fremdschlüssel zugreifen. Weder UpdateView noch über das Admin-Panel führt zu Fehlern. Aber beide halten es nicht ausgewählt. ManyToMany-Felder zeigen dagegen die Relationen richtig an. –