Wie aktualisiert man ein Objekt vom Bearbeitungsformular in Django?


0 Answers

Update für Django 1.6 und weitere Version

# forms.py
# ...
class MyForm(forms.ModelForm):

     class Meta:
     model = MyModel

# views.py  

def my_view(request, id): 
    instance = MyModel.objects.get(id=id)
    form = MyForm(request.POST or None, instance=instance)
    if form.is_valid():
          form.save()
          return redirect('next_view')
return direct_to_template(request, 'my_template.html', {'form': form})  
Question

Möglicherweise eine neue Frage, also bitte, bitte mit mir.

Ich habe ein Django-Formular, das eine bestimmte Instanz eines Modells bearbeitet. Um zu wissen, welches Objekt bearbeitet wird, habe ich ein verstecktes Feld, das die ID des Objekts zusammen mit der URL enthält, die die ID enthält.

Erste Frage : Ist die ID des Objekts in einem versteckten Feld der richtige Weg?

Meine (möglicherweise unbegründete) Sorge, es nur als Teil der URL zu haben, besteht darin, dass jemand dann die Seite einer Objekt-ID öffnen, das Formular an eine andere übergeben kann und dieses Objekt dann überschrieben wird. Deshalb versuche ich ein verstecktes Feld zu benutzen.

Das Problem beim Speichern der ID in einem versteckten Feld besteht darin, dass Django bei der Validierung des Formulars beklagt, dass das Objekt (offensichtlich) keine eindeutige ID hat.

Zweite Frage : Wenn ein eindeutiges Feld Teil eines Formulars ist, wie sagt man Django, dass es die Tatsache ignoriert, dass dieser Schlüssel bereits existiert, um das Objekt zu aktualisieren?




Related