这就是我从网页上检索帖子数据的方法。可以保存人员模型,但它包含"(u'')"
字符串。例如,如果将firstname
更改为“Alex”,则会获得原始值u('Alex')
并将其保存。
def submit_e(req, person_id=None):
if(req.POST):
try:
person_id = req.POST['driver']
person = Person.objects.get(pk=person_id)
person.firstname = req.POST['firstname'],
person.midname = req.POST['middleinitial'],
person.lastname = req.POST['lastname'],
person.full_clean()
person.save()
except Exception as e:
print e
return HttpResponseRedirect(reverse('users:user_main'))
答案 0 :(得分:0)
注意:根据您的问题,以下是我对您所看到的内容的最佳猜测。如果我猜错了,请更新您的帖子并提供更多详细信息 - 在您的代码中添加print
语句并将输出添加到您的帖子将是一个良好的开端。
字符串上的u
前缀表示Unicode字符串。它实际上不是字符串内容的一部分。如果我们在解释器中创建一个字符串:
>>> name = u'Me'
然后请求字符串的详细信息
>>> name
u'Me'
然后显示u
,因为它是关于字符串的信息的一部分,这是我们要求的。如果我们打印字符串的内容
>>> print name
Me
然后u
未显示(就像引号未显示一样)。
使用解释器尝试重现您的问题,我创建了一个新用户,其中包含用户名的Unicode字符串:
>>> from django.contrib.auth.models import User
>>> new_user = User()
>>> new_user.username = u'Me'
>>> new_user.save()
和以前一样,如果我们请求有关字符串的详细信息,我们会看到u
和引号,但如果我们打印字符串的内容,则不会:
>>> new_user.username
u'Me'
>>> print new_user.username
>>> Me
为了进一步确认未存储u
,我们可以直接浏览数据库:
sqlite> select username from auth_user;
Me
答案 1 :(得分:0)
您需要删除每行末尾的“,” 所以,之前:
person.firstname = req.POST['firstname'],
person.midname = req.POST['middleinitial'],
person.lastname = req.POST['lastname'],
后
person.firstname = req.POST['firstname']
person.midname = req.POST['middleinitial']
person.lastname = req.POST['lastname']