2016-02-29 33 views
0

我試圖爲每個存儲該人的姓名的拼音(將中文字符翻譯成字母)的人員創建一個字段,使用函數pinyin()(即工作和測試)。但我似乎無法創建基於同一模型中的名稱字段的字段name_pinyin。這是解決這個問題的正確方法嗎?在此先感謝Django - 如何創建基於同一模型中的另一個字段的字段

from django.db import models 
from xpinyin import Pinyin 

class Person(models.Model): 
    address = models.CharField(max_length500) 
    name = models.CharField(max_length=200) 
    name_pinyin = models.CharField(pinyin(name),max_length = 200) 

    def pinyin(self): 
     p=Pinyin() 
     return p.get_Pinyin()(str(self),'') 
    #This is a function that returns pinyin of chinese characters 
+1

你需要保存'name_pinyin'到數據庫?你可以每次調用'get_Pinyin()'這個名字的拼音版本嗎? –

+0

是的,我認爲這也應該工作,謝謝! – DanielleC

回答

1

你可以使用模型保存方法是這樣的:

class Person(models.Model): 
    address = models.CharField(max_length500) 
    name = models.CharField(max_length=200) 
    name_pinyin = models.CharField(pinyin(name),max_length = 200) 

    def save(self, *args, **kwargs): 
     self.name_pinyin = Pinyin(self.name) 
     super(Person, self).save() 
相關問題