我有一个user
模型,我正在尝试创建一个管理创建/更新表单渲染/发布的视图。
这是我现在所做的视图
def user_edit(request, user_id=None):
obj = {}
status = 200
if user_id:
user = get_object_or_404(User, pk=user_id)
else:
user = User()
user_form = UserForm(instance=user, prefix='user')
if request.method == 'POST':
user_form = UserForm(request.POST, instance=user, prefix='user')
if user_form.is_valid():
user_form.save()
else:
status = 406
obj['user_form'] = user_form
return render(request, 'user/edit.html', obj, status=status)
这工作正常,但如您所见,我user_form
被初始化了 2 次。为了使这更干燥,POST
有时我想更新表单定义而不是重新定义它。就像是:
if request.method == 'POST':
user_form.data = request.POST
user_form.prefix = 'user'
但我无法完成这项工作。所以2个问题:
- 我的观点似乎有效吗?
- 如何避免表单重新定义?