以下是我如何声明我的选择字段:
niveau_etudes = models.CharField(max_length=1,
choices=[(a, b) for a, b in
list(TAB_NIVEAU_ETUDE.items())],
default=NIVEAU_ETUDE_PRIMAIRE,
null=True, blank=True)
然后我创建这样的组合:
@TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1)
private void forceRTLIfSupported()
{
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1){
getWindow().getDecorView().setLayoutDirection(View.LAYOUT_DIRECTION_RTL);
}
}
问题是我的客户刚刚发送了...... 八个字段(这是最短的一个!)。所以我不能把所有那些“静态”值放在模型文件中,因为它将变得不可读。
如何解决这个问题?
答案 0 :(得分:0)
我会这样做:
#/usr/bin/python
class Personne:
pass
names = ["PETITE_ENFANCE", "PRIMAIRE", "SECONDAIRE_1ER_CYCLE",
"SECONDAIRE_2ND_CYCLE", "POST_SECONDAIRE", "SUPERIEUR_CYCLE_COURT",
"SUPERIEUR_LICENCE", "MASTER", "DOCTORAT", "AUTRE"]
descrpitions = ('Early childhood education ("less than primary" for educational attainment)',
"Primary education", "Lower secondary education",
"a", "a", "a", "a", "a", "a", "a", "a", "a", )
for i, name in enumerate(names):
setattr(Personne, "NIVEAU_ETUDE_" + name, unicode(i))
TAB_NIVEAU_ETUDE = {i: (descrpitions[i]) for i, name in enumerate(names)}
setattr(Personne, "TAB_NIVEAU_ETUDE", TAB_NIVEAU_ETUDE)
print Personne.NIVEAU_ETUDE_PETITE_ENFANCE
print Personne.NIVEAU_ETUDE_DOCTORAT
print TAB_NIVEAU_ETUDE
输出:
0
8
{0: 'Early childhood education ("less than primary" for educational attainment)', 1: 'Primary education', 2: 'Lower secondary education', 3: 'a', 4: 'a', 5: 'a', 6: 'a', 7: 'a', 8: 'a', 9: 'a'}
不知道上面代码中的_()可能是某个变量/函数,但它应该可以正常工作。
答案 1 :(得分:0)
以下是我的表现:
我已经创建了另一个班级,每次我想要引用"常数"我打电话给我的班级,例如:
class Personne(models.Model):
sexe = models.CharField(max_length=1,
choices=[(a, b) for a, b in
list(PersonneEnums.TAB_SEXE.items())],
default=PersonneEnums.SEXE_HOMME)
这里是我的类,它只包含已翻译的常量:
class PersonneEnums(object):
SEXE_HOMME = u'0'
SEXE_FEMME = u'1'
TAB_SEXE = {SEXE_HOMME: _(u'Male'),
SEXE_FEMME: _(u'Female'), }
EST_NON_FUMEUR = u'0'
EST_FUMEUR = u'1'
EST_FUMEUR_OCCASIONNEL = u'2'
EST_FUMEUR_AUTRE = u'3'
TAB_EST_FUMEUR = {EST_NON_FUMEUR: _(u'Non-smoker'),
EST_FUMEUR: _(u'Smoker'),
EST_FUMEUR_OCCASIONNEL: _(u'Social smoker'),
EST_FUMEUR_AUTRE: _(u'Other'),
}