Только для подтверждения ответа dominics вот его решение в коде (который на самом деле работает):
tabHost.setOnTabChangedListener(new OnTabChangeListener() {
public void onTabChanged(String tabId) {
if (TAB_MAP.equals(tabId)) {
ImageView iv = (ImageView) tabHost.getTabWidget().getChildAt(0).findViewById(android.R.id.icon);
iv.setImageDrawable(getResources().getDrawable(R.drawable.tab_map_black));
iv = (ImageView) tabHost.getTabWidget().getChildAt(1).findViewById(android.R.id.icon);
iv.setImageDrawable(getResources().getDrawable(R.drawable.tab_list_white));
} else if (TAB_LIST.equals(tabId)) {
ImageView iv = (ImageView) tabHost.getTabWidget().getChildAt(0).findViewById(android.R.id.icon);
iv.setImageDrawable(getResources().getDrawable(R.drawable.tab_map_white));
iv = (ImageView) tabHost.getTabWidget().getChildAt(1).findViewById(android.R.id.icon);
iv.setImageDrawable(getResources().getDrawable(R.drawable.tab_list_black));
}
}
});
, Конечно, это не полируется вообще, и использующий те прямые индексы в getChildAt () не хорошо вообще...
>>> u=User.objects.get(pk=1)
>>> u.is_active
1
>>> u.is_active==1
True
>>>
Причины, по которым логические столбцы возвращают 1 или 0, указаны в ссылке в вашем вопросе.
Вы можете создать свой собственный метод для вашей модели, который будет оценивать это за вас:
class User(models.Model):
active_status = models.BooleanField(default=1)
def is_active(self):
return bool(self.active_status)
Тогда любые тесты, которые вы выполняете для этого поля, могут вместо этого просто ссылаться на метод:
>>> u.is_active()
True
Вы даже можете сделать это в свойство:
class User(models.Model):
active_status = models.BooleanField(default=1)
@property
def is_active(self):
return bool(self.active_status)
, так что пользователям класса даже не нужно знать, что он реализован как метод:
>>> u.is_active
True