任何想法,为什么发生这种情况?django形式从以前的实例中获取价值?
(Pdb) import copy
(Pdb) tmpForm=copy.copy(form1)
(Pdb) form1
<cms.forms.MainFeaturedForm object at 0x7f05a0493350>
(Pdb) tmpForm
<cms.forms.MainFeaturedForm object at 0x7f05a054e950>
复制Form1以tmpForm(并确保他们是在不同的内存地址),以确保这种行为不会发生,因为form1中被改变
(Pdb) v1=form1.save(commit=False)
(Pdb) v1.position
如上面可以看出,V1 .POSITION ==无一form1.save之后(提交= FALSE)
(Pdb) v1.image_type=2
(Pdb) v1.Article=article
(Pdb) v1.section=33
(Pdb) v1.save()
(Pdb) v1.position
55L
这里我设置一些值,并将其保存 保存()函数改变V1 POSITI到55(这是预期)
(Pdb) v2=tmpForm.save(commit=False)
(Pdb) v2.position
55L
但现在,经过我救了V1,V2(一个完全地新的实例)有一个位置设置好的添加到在V1(不预期)
设置相同的一个
的情况下,它可以帮助,这里的这个对象(类精选)的保存()函数:
def save(self):
if self.Article:
try:
featured = Featured.objects.get(Article=self.Article, section=self.section)
self.hiddenID = featured.hiddenID
if self.position == None:
if featured.position == None:
self.position = 55
else:
self.position = featured.position
super(Featured, self).save(force_insert=False, force_update=True)
except Featured.DoesNotExist:
self.hiddenID = None
super(Featured, self).save(force_insert=True, force_update=False)
else:
self.hiddenID = None
super(Featured, self).save(force_insert=True, force_update=False)
是什么让你觉得内存地址很重要?我想不出为什么会这样。你不显示重要的代码,这是'form1'的实际内容,以及它是如何实例化的。 – 2012-01-03 15:17:28
我只是确保它是不是同一个对象 form1的= MainFeaturedForm(request.POST,PREFIX = “F1”) 类MainFeaturedForm(的ModelForm): 类元: 模型=精选 栏=(” text1','text2') – 2012-01-03 16:06:31