我误解了一些东西!如果我的模型没有保存,它没有与它关联的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