Django - ModelForm 创建还是更新? [英] Django - ModelForm Create or Update?
本文介绍了Django - ModelForm 创建还是更新?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我需要一个表格,允许在计划中创建或添加会话
I need to have a form that allows the creation or addition of sessions on a planning
class Session(models.Model):
tutor = models.ForeignKey(User)
start_time = models.DateTimeField()
end_time = models.DateTimeField()
表格
class SessionForm(forms.ModelForm):
class Meta:
model = Session
exclude = ['tutor']
查看以呈现表单
def editor(request):
if request.method == 'GET':
if request.GET['id'] != '0':
# The user has selected a session
session = Session.objects.get(id=request.GET['id'])
form = SessionForm(instance=session)
else:
# The user wants to add a new session
form = SessionForm()
return render_to_response('planner/editor.html',
{'form': form,}, context_instance=RequestContext(request),)
模板editor.html
<form action="/planner/post" method="post">{% csrf_token %}
{{ form.as_p }}
</form>
查看发布值
def post(request):
if request.method == 'POST':
form = SessionForm(request.POST)
if form.is_valid():
form.instance.tutor = request.user
form.save()
obj = {'posted': True}
return HttpResponse(json.dumps(obj), mimetype='application/json')
else:
return render_to_response('planner/editor.html',
form, context_instance=RequestContext(request),)
问题
会话总是被创建(从不更新)
Problem
Sessions are always created (never updated)
- 在我看来
post
我怎么知道会话必须更新而不是创建? - 有没有办法简化这段代码?
- In my view
post
how do I know that the session must be updated and not created ? - Is there a way to simplify this code ?
推荐答案
如果要更新会话,需要在绑定表单时提供实例.
If you want to update a session, you need to provide the instance when you bind the form.
如果表单有效,则可以使用 commit=False
保存,并更新导师.
If the form is valid, you can then save with commit=False
, and update the tutor.
form = SessionForm(instance=instance, data=request.POST)
if form.is_valid():
instance = form.save(commit=False)
instance.tutor = request.user
instance.save()
这篇关于Django - ModelForm 创建还是更新?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文