sha*_*fin 6 django django-forms
我误会了什么!如果我的模型未保存,则它没有与之关联的ID.所以,如果我有这样的事情:
views.py (插入或编辑现有信息使用相同的模型)
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(...)
Run Code Online (Sandbox Code Playgroud)
我还有一个图像,并使用upload_to作为图像域.有两个问题:id是None,我不确定如何操作/保存,instance=book以便我实际上得到一个id.第二个问题是我保存数据的位置是关闭的.即使模板标签book.img.url具有所需的书籍http:127.0.0.1:8000/folder1/media/id/位置,实际位置也位于其他位置:
我想将图像保存到的位置:
/project/folder1/media/id/
Run Code Online (Sandbox Code Playgroud)
id书的ID 在哪里.
我真正得到的是:
/project/id/
Run Code Online (Sandbox Code Playgroud)
(但'id'变为'None',因为它不存在!)
我以前的代码工作.它将保存到正确的位置,但使用此当前代码,它不起作用.所以保存问题似乎不是由于settings.py,因为它以前工作.
编辑:从代码格式区域中删除非代码
编辑:我发现了为什么我没有保存到正确的位置.事实证明,当我上次修改settings.py时,我忘了取消注释.保存到位置现在工作!对不起大家!
编辑:我认为id = None问题是由form.save()引起的.如果我避免这样做并直接保存到模型,我没有这个问题.
小智 1
对于第一部分:
def insert_or_modify(request, id=None):
if id:
book = BookModel.objects.get(pk=id)
if request.method == 'POST':
form = BookInfoForm(request.POST, request.FILES, instance=book)
if form.is_valid():
save_book = form.save()
# use save_book as your instance of BookModel
....
else:
if request.method == 'POST':
form = BookInfoForm(request.POST, request.FILES)
if form.is_valid():
save_book = form.save()
# use save_book as your instance of BookModel
....
Run Code Online (Sandbox Code Playgroud)
save_book = form.save()允许您用作save_book保存的 BookModel 实例,并且save_book.id是它的 id。
| 归档时间: |
|
| 查看次数: |
3852 次 |
| 最近记录: |