Ich lerne das CBV in Django.Django Createview Formular speichern und auf Seite entsprechend der ID des Fremdschlüssels umleiten
Ich habe eine Seite von Flat
. Ich möchte, dass ein Benutzer einige Bilder der Wohnung auf dieser Seite hinzufügen kann.
Die Fotos der Wohnung sind im Modell gespeichert und mit den Modellen User
und Flat
verbunden. Mein Modell sieht wie folgt aus:
class Photo(models.Model):
photo_path = models.ImageField(verbose_name='Фотография')
photo_user = models.ForeignKey(User, verbose_name='Агент, добавивший фото')
photo_flat = models.ForeignKey(Flat, verbose_name='Квартира')
photo_description = models.CharField(verbose_name='Описание', max_length=200, null=True, blank=True)
Mein Ziel: Wenn ein Benutzer einige Bilder hinzufügt und den Knopf drückt, werden die Bilder auf dem Modell gespeichert werden. Der Benutzer wird dann zur gleichen Detailansicht der Wohnung umgeleitet und sieht ihre hinzugefügten Bilder.
Ich habe verschiedene Optionen ausprobiert, aber ich habe nicht genug Fähigkeiten, um mit diesem Problem umzugehen.
Das erste, was mich verwirrt, ist die template_name
Variable in der CreateView
. Mein CreateView sieht so aus:
Was ist, wenn ich dem Benutzer keine andere Seite anzeigen möchte? Ich möchte, dass sie nach dem Posten der Bilder in die gleiche flache Detailansicht umgeleitet werden. Ich kann nicht template_name
von CreateView
löschen, da der folgende Fehler:
TemplateResponseMixin requires either a definition of 'template_name' or an implementation of 'get_template_names()'
Was habe ich in der CreateView
oben erreicht?
Die zweite verwirrende Sache: Ich postete die Bilder und wurde umgeleitet auf redirect.html
, aber nicht die flache Detailansicht. Das ist schlecht. Aber meine Bilder wurden auch nicht gespeichert. Das ist sehr schlecht. Ich habe versucht, redirect.html
zu flatdetail.html
zu ändern, aber natürlich zeigt es die Seite mit keinen zusätzlichen Informationen wie Zimmer, Größe, Preis und so.
Was soll ich tun, zwei Dinge in dieser besonderen Situation zu erreichen:
speichern die Daten
Leiten Sie den Benutzer auf die flache Detailansicht nach ein paar Fotos hinzufügen.
Zusätzliche Informationen: meine urls.py
url(r'^dev/flat/(?P<flat_id>[0-9]+)/$', views_dev.flat_ajax, name='flatdetail'),
url(r'^dev/photo-update/(?P<flat_id>[0-9]+)/$', views_dev.PhotoUploadView.as_view(), name='image-update')
mein forms.py
class PhotoUploadModelForm(forms.ModelForm):
class Meta:
model = Photo
fields = ['photo_path']
Meine Form in der flatdetail Vorlage:
<form action="/dev/photo-update/{{flat.id}}/" method="POST">
{% csrf_token%}
<input type="file" multiple>
<button>Send</button>
</form>
Da Sie den Code aus meiner Antwort zu Ihrer vorherigen Frage verwendet haben, sollten Sie diese Antwort akzeptieren. –
Haben Sie Erfolg, oder brauchen Sie mehr Hilfe? Wenn meine Antwort "die Antwort" wäre, würde es Ihnen etwas ausmachen, sie anzunehmen? – Bono