0

这就是我从网页中检索帖子数据的方式。可以保存人员模型,但它包含"(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'))
4

2 回答 2

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
于 2013-01-05T09:50:34.180 回答
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']
于 2013-05-16T04:45:07.060 回答