这是一种理智的方法来备份和更新原始文件吗?
project = Project.objects.get(pk=project_id)
# ...
if request.method == "POST": # If the form has been submitted...
project_form = ProjectForm(request.POST, instance=project)
if project_form.is_valid():
project.save(force_insert=True) # Make a backup copy
updated_project = project_form.save(commit=False)
updated_project.editor_id = editor_id
if request.POST["beginyear"]: by = int(request.POST["beginyear"])
if request.POST["beginmonth"]: bm = int(request.POST["beginmonth"])
if (by > 0) and (bm > 0):
updated_project.begin_date = "%4.4d-%2.2d-01" % (by,bm,)
# ...
updated_project.save()
答案 0 :(得分:3)
它有效吗? 我问的是复制是否正确保存,因为对我来说它看起来不是:force_insert执行它实际上说的 - 它只是在SQL中发出INSERT请求而不是UPDATE。 你需要的是复制 - 你可以这样做:
project.pk = None
project.save()
by = request.POST.get("beginyear")
bm = request.POST.get("beginmonth")
if by and bm:
try:
updated_project.begin_date = datetime.datetime(year=int(by), month=int(bm), day=1)
except ValueError:
#some handling here
pass
所以现在你不必初始化by
和bm
,我认为它现在做的更为明显。