私は何かを誤解しています!モデルが保存されていない場合、モデルに関連付けられているIDはありません。私はこのような何か持っているのであれば:モデルのフォームインスタンスはid = Noneを与えますDjango
def insert_or_modify(request, id=None):
if id is not None:
book = BookModel.objects.get(pk=id)
else:
book = BookModel()
if request.method == 'POST':
form = BookInfoForm(request.POST, request.FILES, instance=book)
if form.is_valid():
form.save()
....
return render_to_response(...)
を
views.py
(挿入したり、既存の情報を編集することは同じのModelFormを使用しています)私はまた、イメージを持っているとのImageFieldためupload_to使用しています。 2つの問題があります。idはNoneで、instance=book
を操作して保存する方法がわからないので、実際にIDを取得します。 2番目の問題は、データを保存する場所が離れていることです。テンプレートタグbook.img.url
がhttp:127.0.0.1:8000/folder1/media/id/
での書籍の目的の場所を持っているにもかかわらず、実際の場所はどこか別の場所である:
id
は、書籍IDで
/project/folder1/media/id/
:私は私の画像を保存したい
。
私は実際に何を得る:
/project/id/
は私の前のコードが働い
(!しかし、 'idが' 'なし' が存在しないためになりません)。正しい場所に保存されますが、このコードでは動作しません。ですから、節約の問題は、それが以前に働いて以来、settings.pyが原因であるようには思えません。
EDIT:削除コードから非コードフォーマットするエリア
編集:私は、私が正しい場所に保存されなかった理由が分かりました。判明したように、私は最後にsettings.pyを修正したときに何かコメントを外すのを忘れていました。現在の場所に保存することができます!ごめんなさい!
EDIT:id = Noneの問題は、form.save()によって発生していると思います。それを避け、モデルに直接保存するだけであれば、この問題は発生しません。最初の部分については
ありがとう!ええ、私はこのようなことを試みました。これはまだNoneフォルダを作成していますが、今回はidフォルダも作成しています。例えば、 'save_book.img.save( 'img'、request.FILES ['img'])'を実行すると、imgは/ Noneと/ 1に保存されます。 – sharkfin