のIDに応じてページにリダイレクト。ジャンゴCREATEVIEWは、フォームを保存し、私はジャンゴでCBVを勉強していますForeignKeyの
私はFlat
のページを持っています。ユーザーがそのページにアパートの写真を追加できるようにしたい。
フラットの写真はモデルに保存され、User
とFlat
モデルで接続されます。
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)
私の目標:私のモデルは次のようになり、ユーザはいくつかの写真を追加し、ボタンを押すと、画像がモデルに保存されます。ユーザーはフラットの同じ詳細ビューにリダイレクトされ、追加された画像が表示されます。
私は別のオプションを試してみたが、私はこの問題を処理するのに十分なスキルを持っていません。私は混乱します
最初の事はCreateView
でtemplate_name
変数です。私CREATEVIEWは、次のようになります。
class PhotoUploadView(CreateView):
form_class = PhotoUploadModelForm
template_name = 'photo_upload.html'
def form_valid(self, form):
self.instance.photo_user = self.request.user
self.instance.photo_flat_id = self.kwargs['flat_id']
form.save()
return super(PhotoUploadView, self).form_valid(form)
def get_success_url(self):
return reverse('flatdetail')
私は、ユーザーに任意の別のページを表示したくない場合は?写真を投稿した後、同じフラットな詳細ビューにリダイレクトされるようにします。私は次のエラーのためCreateView
からtemplate_name
を削除することはできません。
TemplateResponseMixin requires either a definition of 'template_name' or an implementation of 'get_template_names()'
私は上記CreateView
で達成していますか?
二混乱を招く事:私はフラットな詳細ビューを写真を掲載してredirect.html
にリダイレクトされましたが、ありません。それは良くないね。しかし、私の写真は保存されませんでした。それは非常に悪いです。私は、もちろん、そのような部屋、サイズ、価格およびなどの追加情報なしでページを示し、flatdetail.html
からredirect.html
を変更しようとしたがきました。
私は、この特定の状況では二つのことを達成するために何をすべき:
保存データ
は、いくつかの写真を追加した後、フラット詳細ビューにユーザーをリダイレクトします。
追加情報: 私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')
私forms.py
class PhotoUploadModelForm(forms.ModelForm):
class Meta:
model = Photo
fields = ['photo_path']
flatdetailテンプレート内のマイフォーム:
<form action="/dev/photo-update/{{flat.id}}/" method="POST">
{% csrf_token%}
<input type="file" multiple>
<button>Send</button>
</form>
私の答えのコードを以前の質問に使用したので、その答えを受け入れる必要があります。 –
成功しましたか、それとも助けが必要ですか?私の答えが「答え」だったらそれを受け入れるのですか? – Bono