我尝试使用django-admin
中图像的一些exif元数据填充数据库字段。我正确地解码它意味着print
确实显示了带有变音符号的字符串。但是,当我在模型上调用save()
时,字符串永远不会出现在数据库中(sqlite)。对于没有变音符号的字符串以及包含变音符号的常量字符串,它可以正常工作。没有任何错误或某些东西可以让我对出现的问题有所暗示。这就是为什么我不知道要搜索什么。
我正在尝试隔离代码的重要部分:
模型save
功能:
def save(self, *args, **kwargs):
self.url = slugify(self.name)
super(Photo, self).save(*args, **kwargs)
save_model
文件中的admin.py
函数:
def save_model(self, request, obj, form, change):
if("original_image" in request.FILES):
file = request.FILES["original_image"]
if (not obj.description):
from silbertools.get_exif import get_exif
obj.description = get_exif(file)
if (not obj.name):
obj.name = unicode(file)[:-4][:100]
obj.save()
相关的description
字段定义如下:
description = models.TextField(blank=True)
get_exif
功能:
def get_exif(fn):
i = Image.open(fn)
info = i._getexif()
if info:
for tag, value in info.items():
decoded = TAGS.get(tag, tag)
if (decoded == "UserComment"):
var = value[8:].decode('latin1')
print(u"The string is: {0}".format(var))
return var
return u""
我可以通过print语句告诉get_exif()
函数。我确认说明已在save_model()
之前的obj.save()
中正确设置。
如果字符串中有变音符号,并且从exif元数据中读取字符串,它仍然没有任何帮助,它不会显示在数据库中。没有错误,模型的其余部分按预期添加,只是描述字段为空。
我希望有人可以提取足够的信息来帮助我解决问题。
提前致谢!
答案 0 :(得分:-1)
在解释器中工作正常,您是否在模块顶部添加了编码?
# -*- coding: utf-8 -*-
test = "März"
if __name__ == "__main__":
print test.decode('utf-8')
编辑:简要搜索 python + umlaut ,这个答案已经给出here