2015-03-02 53 views
1

是否可以通過人類可讀的值過濾模型?Django模型按照人類可讀的值過濾

#models.py 
class World(models.Model): 
    COUNTRY_CHOICES = (('SP', 'Spain'), ('FR', 'France')) 
    country=models.CharField(max_length=20, choices=COUNTRY_CHOICES, default=None) 
    province=models.CharField(max_length=20, default=None) 

#managers.py 
def get_provinces(self): 
    provinces = self.filter(country='SP') 
    return provinces 

這將返回哪些國家是西班牙的省份,但我怎樣才能做同樣的過濾使用'西班牙'而不是'SP'?

回答

2

這是不可能的。國名不會存儲在數據庫中的任何位置。因此,您必須從顯示名稱中獲取國家/地區值並通過它進行過濾:

countries = dict((v, k) for k, v in World.COUNTRY_CHOICES) 
provinces = self.filter(country=countries['Spain'])