Möglicherweise eine Frage für Neulinge, daher bitte ich um Nachsicht 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 enthält, zusammen mit der URL, die die ID enthält.
Erste Frage : Ist es richtig, die ID des Objekts in einem verborgenen Feld zu speichern?
Meine (möglicherweise unbegründete) Besorgnis darüber, dass es nur Teil der URL ist, besteht darin, dass jemand die Seite einer Objekt-ID öffnen und das Formular an ein anderes Objekt senden könnte, das dann überschrieben wird. Deshalb versuche ich, ein verstecktes Feld zu verwenden.
Das Problem bei der Speicherung der ID in einem versteckten Feld ist, dass Django bei der Validierung des Formulars bemängelt, dass das Objekt keine eindeutige ID hat (offensichtlich).
Zweite Frage : Wenn ein eindeutiges Feld Teil eines Formulars ist, wie kann man Django sagen, dass es die Tatsache ignorieren soll, dass dieser Schlüssel bereits existiert, um das Objekt zu aktualisieren?
0 Stimmen
Können Sie mir Ihr Formular zeigen? PS: Ja, ohne Sicherheitsvorkehrungen (Genehmigungen),
/edit/{{ id }}/
wäre für jeden zugänglich und gefährlich.1 Stimmen
Ich habe zwar Sicherheitsvorkehrungen getroffen, wie z. B. die Überprüfung, ob das Objekt dem angemeldeten Benutzer gehört - aber selbst dann könnte dieser Benutzer (aus mir unbekannten Gründen) ein unbeabsichtigtes Objekt bearbeiten.