【问题标题】:Django saving form strings in database with extra characters (u'string')Django 在数据库中保存带有额外字符的表单字符串(u'string')
【发布时间】:2012-08-02 02:11:58
【问题描述】:

我在尝试将 form.cleaned_data 保存到 postgres 数据库时遇到问题。

user_instance.first_name = form.cleaned_data['first_name']

数据以这种方式保存(u'Firstname',),带有“u”前缀和括号,就像我在数据库中保存元组一样。

我已经在 mysql 数据库中使用过这么多次,以前从未发生过,

我的 django 版本是 1.3.1

更新

我是这样使用逗号的 user_profile.phone_area = phone_area, user_profile.phone_number = phone_number, user_profile.email = 电子邮件,

我编辑了别人的源代码并忘记删除逗号,这就是它生成元组的原因。谢谢你的帮助

【问题讨论】:

标签: python django postgresql django-forms django-postgresql


【解决方案1】:

除了验证之外,form.clean_data() 将执行一些到 Python 数据类型的隐式转换。您可以通过使用内置的str()unicode() 包装返回值来简单地执行显式转换。然后,使用strip("(''),") 格式化字符串。

【讨论】:

  • 试过 str(form.cleaned_data['first_name']) 什么都没有,你只是消失了,但括号仍然存在
  • 我忘了提,您需要剥离元组工件的结果字符串。我不小心遗漏了这个小细节;我将更改我的答案以反映这一点。
  • 谢谢您的回答,我以前从来不需要这样做来将表单数据保存在数据库中,为什么现在将其转换为元组?,我还检查了cleaned_data字典和字符串是 u'string' unicode 字符串
  • 我还要提一下,如果结果元组包含多个您希望加入的值,请使用"".join(form.clean_data())
  • 这种转换可能与表单类以及您的字段的结构(如果有的话)有关,我不确定;我自己没有经历过这种特殊行为。来自 Django 网站:“...最好访问 form.cleaned_data。这些数据不仅已经过验证,还会为您转换为相关的 Python 类型。”-docs.djangoproject.com/en/1.4/topics/forms
猜你喜欢
  • 2021-09-01
  • 1970-01-01
  • 2021-02-09
  • 1970-01-01
  • 2015-08-21
  • 2015-01-02
  • 1970-01-01
  • 2023-02-07
  • 2010-10-10
相关资源
最近更新 更多