2013-01-05 84 views
0

可能重複:
python : working with german umlautDjango不保存字段包含變音

我嘗試使用從圖片EXIF一些元數據來填充django-admin數據庫字段。我正確解碼意味着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"" 

get_exif()功能無法正常工作,據我可以通過打印語句告訴。我確認在obj.save()之前save_model()中的描述設置正確。

只要字符串中存在元音變音,並且該字符串是從exif元數據中讀取的,它就不會顯示在數據庫中,但仍然沒有任何幫助。沒有錯誤,模型的其餘部分按預期添加,只是說明字段爲空。

我希望有人能夠提取足夠的信息來幫助我解決問題。

在此先感謝!

+0

沒有那不是我的問題!我沒有得到任何錯誤!而且一切都打印得很好。它只是沒有存儲到數據庫中。 – enaut

回答

-1

在解釋器中正常工作,您是否在模塊的頂部添加了編碼?

# -*- coding: utf-8 -*- 

test = "März" 

if __name__ == "__main__": 
    print test.decode('utf-8') 

編輯:爲蟒蛇+元音一個簡短的搜索,這個答案已經給出here

+0

是的,我確實添加了編碼。據說我沒有得到任何錯誤。即使沒有編碼,一切都應該是正常的,因爲所有的字符串來源都是外部的。編碼僅用於在此特定文件afaik中定義的字符串常量。 – enaut