我誤解了一些東西!如果我的模型沒有保存,它沒有與它關聯的ID。所以,如果我有這樣的事情:一個模型的實例給出id = None Django
views.py
(插入或編輯現有的信息使用相同的ModelForm)
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(...)
我也有一個圖像,並使用upload_to爲的ImageField。有兩個問題:id是None,我不知道如何操作/保存instance=book
,以便我實際上得到一個id。第二個問題是我保存我的數據的位置是關閉的。即使模板標籤book.img.url
擁有該書的理想位置在http:127.0.0.1:8000/folder1/media/id/
,實際位置是在別處:
,我想我的圖像保存到:
/project/folder1/media/id/
其中id
是書ID。
我居然得到:
/project/id/
(但 '身份證' 成爲 '無',因爲它不存在!)
我以前的代碼工作。它會保存到正確的位置,但使用當前的代碼,它不起作用。所以保存問題似乎並不像settings.py那樣是因爲它以前有效。
編輯:刪除從代碼格式化區域
EDIT非代碼:我發現我爲什麼不能保存到正確的位置。事實證明,當我上次修改settings.py時,我忘了取消註釋。現在保存到該位置即可使用!對不起大家!
編輯:我認爲id = None問題是由form.save()引起的。如果我避免這樣做,直接保存到模型中,我就沒有這個問題。
謝謝!是的,我嘗試了這樣的事情。它仍然創建None文件夾,但是這次它也創建了id文件夾。例如,如果我執行`save_book.img.save('img',request.FILES ['img'])`,img將被保存在/ None和/ 1中。 – sharkfin 2011-12-16 02:28:21