重複の可能性:
python:ドイツ語のウムラウトでの作業
の画像からの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()
関数は、printステートメントでわかる限りうまく機能します。save_model()
の直前に説明が正しく設定されていることを確認しましたobj.save()
。
それでも、文字列にumlautがあり、文字列がexifメタデータから読み取られるとすぐには、データベースに表示されないため、何も役に立たないようです。説明フィールドが空白であるだけで、モデルの残りの部分が期待どおりに追加されるというエラーはありません。
誰かが私が問題にたどり着くのを助けるのに十分な情報を抽出できることを願っています。
前もって感謝します!