我有一个我正在管理的多页表单。当我更新记录时,它会删除以前捕获的所有数据。
模型
class User(models.Model):
first = models.CharField(max_length=45L, db_column='First', blank=True)
last = models.CharField(max_length=45L, db_column='Last', blank=True)
email = models.CharField(max_length=60L, db_column='Email', blank=True)
表格
class UserForm(ModelForm):
class Meta:
model = User
表单1捕获电子邮件:
def form_one(request):
if request.method == 'POST':
print request.POST
uf = UserForm(request.POST)
if uf.is_valid():
user = uf.save()
request.session['id'] = user.id
打印:
<QueryDict: {u'email': [u'test@test.com']}>
数据库显示电子邮件记录
表单2捕获用户名:
def form_one(request):
if request.method == 'POST':
print request.POST
current_user = User.objects.get(id = request.session['id'])
uf = UserForm(request.POST, instance = current_user)
if uf.is_valid():
uf.save()
打印:
<QueryDict: {u'last': [u'Smith'], u'first': [u'Joe']}>
数据库显示相同的记录,已删除的电子邮件,但首先是&amp;姓氏。
答案 0 :(得分:0)
您的电子邮件字段包含blank=True
,因此空字符串''是有效值。这意味着如果您未在发布数据中为其提供值,则会擦除电子邮件。
如果您不想在第二个表单中包含电子邮件字段,请将其排除。
class UserForm(ModelForm):
class Meta
model = User
exclude = ('email',)