django坑点整理

本文随时更新,用于记录django中遇到的坑点,以备日后查阅。

Performing system checks…

Unhandled exception in thread started by Traceback (most recent call last): File
“/Library/Python/2.7/site-packages/django/utils/autoreload.py”, line
226, in wrapper
fn(args, *kwargs) File “/Library/Python/2.7/site-packages/django/core/management/commands/runserver.py”,
line 116, in inner_run
self.check(display_num_errors=True) File “/Library/Python/2.7/site-packages/django/core/management/base.py”,
line 454, in check
formatted = ”
“.join(sorted(formatted)) UnicodeDecodeError: ‘ascii’ codec can’t decode byte 0xe7 in position 84: ordinal not in
range(128)

明知道是万年编码问题,可就是不知道到底出错在哪里。找了半天终于找到错误:
patient = models.ForeignKey(u'病人', Patient, models.DO_NOTHING)
需要改成:
patient = models.ForeignKey(Patient, models.DO_NOTHING, verbose_name=u'病人')
原因是ForeignKey, ManyToManyField and OneToOneField跟其他Field不同,它的第一个参数并不是verbose_name。

  • models.UUIDField存到数据库中时不带dash(-

比如user_id = models.UUIDField(verbose_name='UUID', default=UUID.uuid4),本来UUID4应该有36个字符(包括4个短横),但django为了节省空间,存到数据库中时只有32个字符。在django admin中编辑这个uuid字段时,也是不带有短横的,但如果将uuid字段设为readonly,则显示在django admin中时又是带有短横的。
简单来说:models.UUIDField在存储时不带短横,对外使用时带有短横

发表评论

电子邮件地址不会被公开。 必填项已用*标注

此站点使用Akismet来减少垃圾评论。了解我们如何处理您的评论数据