Django的文档非常清楚在数据库级别将空字符串存储为""而不是NULL(因此空数据只有一种可能的格式):
请注意,空字符串值将始终存储为空字符串,而不是NULL.仅对非字符串字段(如整数,布尔值和日期)使用null = True.对于这两种类型的字段,如果要在表单中允许空值,则还需要设置blank = True,因为null参数仅影响数据库存储(请参阅空白).
尽管如此,在添加新字段后,我开始在新字段(phone_number)上遇到IntegrityErrors.
"phone_number"列中的空值违反非空约束
这个模型看起来像这个新领域(我通过南方进行了迁移):
class Person(models.Model):
user = models.ForeignKey(User)
description = models.TextField(blank=True)
phone_number = models.CharField(blank=True)
Run Code Online (Sandbox Code Playgroud)
我已经(暂时)通过在phone_number上设置null = True解决了这个问题,但是现在我有数百个带空字符串的条目,并且我的数据库中有一个NULL值.(我也尝试将default =''添加到phone_number字段,但我仍然看到了IntegrityError问题.)
在过去,我一直使用MySQL,但在这个项目中,我使用的是Postgres.生成的SQL插入尝试是:
'INSERT INTO "people_person" ("user_id", "description", "gender", "birthdate", "default_image_id", "zip_code", "beta_status") VALUES (%s, %s, %s, %s, %s, %s, %s) RETURNING "people_person"."id"'.
我的期望是Django会在"phone_number"列中插入一个空字符串,但它似乎没有这样做.我可能期望的另一件事是Django在CREATE TABLE语句中包含一个SET DEFAULT,但事实并非如此.所以Postgres对该列上的NOT NULL感到愤怒.
谢谢!
我遇到了一个我无法用PIL和reportlab搞清楚的问题.具体来说,我想在reportlab中使用PIL Image对象在画布上使用drawImage.
在过去,我使用原始数据,StringIO和reportlab的ImageReader类将图像插入到web的reportlab文档中.不幸的是,ImageReader采用文件名或文件缓冲区之类的对象.
最终目标是能够将QR码(即PIL对象)放入reportlab PDF中.有效的一点是:
size, qrcode = PyQrcodec.encode('http://www.google.com')
qrcode.save("img.jpeg")
self.pdf.drawImage(ImageReader("img.jpeg"), 25, 25, width=125, height=125)
self.pdf.showPage()
Run Code Online (Sandbox Code Playgroud)
这将保存图像,然后将其读入pdf.显然这样做是没有意义的.
reportlab的相对较长的发展历史使我的努力更加复杂,这使得找到与最新版本(2.4)相关的答案.
谢谢您的帮助.
(顺便说一句,我使用的是1.1.6 PIL)
这是一个奇怪的问题,但我认为我已经在线路的某处做了一些事情,以结束当前的情况.
尝试从CloudFront提供静态文件(图像,css和js)时,它们似乎无法正确呈现.例如,我的一个样式表可以在这里找到:http://d21uvxjmc903qz.cloudfront.net/stylesheets/hf.4fabc9c719f8.css,但它似乎并没有像我期望的那样"应用"到DOM.(例如,在Firebug中查看Chrome或Firefox中的开发人员工具时,相关样式不会应用于该<header>元素.
看看响应标题,看起来Content-Type设置得当,所以我几乎没有想法.
关于下一步要去哪里的建议?
我非常困惑了30分钟,但我认为我的问题必须与Django 1.3的变化有关.
我的urls.py看起来像这样:
if settings.DEBUG:
urlpatterns += patterns('',
(r'^static/(?P<path>.*)$', 'django.views.static.serve',
{'document_root': settings.STATIC_ROOT, 'show_indexes': True}),
(r'^media/(?P<path>.*)$', 'django.views.static.serve',
{'document_root': settings.MEDIA_ROOT, 'show_indexes': True}),
(r'^admin_media/(?P<path>.*)$', 'django.views.static.serve',
{'document_root': settings.ADMIN_MEDIA_ROOT}),
)
Run Code Online (Sandbox Code Playgroud)
如果我访问/ static /,我会得到一个文件列表.例如,在我的根目录中有一个文件"iphone.png".去/static/iphone.png我得到一条404消息.
如果我将该部分更改为:
if settings.DEBUG:
urlpatterns += patterns('',
(r'^otherstatic/(?P<path>.*)$', 'django.views.static.serve',
{'document_root': settings.STATIC_ROOT, 'show_indexes': True}),
(r'^media/(?P<path>.*)$', 'django.views.static.serve',
{'document_root': settings.MEDIA_ROOT, 'show_indexes': True}),
(r'^admin_media/(?P<path>.*)$', 'django.views.static.serve',
{'document_root': settings.ADMIN_MEDIA_ROOT}),
)
Run Code Online (Sandbox Code Playgroud)
与/ otherstatic /相关的一切都非常有效.
我还应该添加/ media /或/ admin_media /没有问题.
这与Django的新静态文件应用程序有关吗?(如果是这样,谁认为完全打破这个非常简单的用例是个好主意?)
谢谢!