我一直试图在我的API视图中使用get_name_display(),但它不显示文本,仅显示数字。我已经检查了文档,但没有提及任何内容-应该可以使用。可能与perform_update()方法有关吗? 例如,下面的代码显示3而不是“ GaussianNB”。
型号
class Algorithm(models.Model):
ALGORITHM_NAME = (
(0, 'KNeighborsClassifier'),
(1, 'LogisticRegression'),
(2, 'LinearSVC'),
(3, 'GaussianNB'),
(4, 'DecisionTreeClassifier'),
(5, 'RandomForestClassifier'),
(6, 'GradientBoostingClassifier'),
(7, 'MLPClassifier'),
)
name = models.CharField(max_length=64, choices=ALGORITHM_NAME)
parameters = JSONField()
查看
class CalcUpdateView(UpdateAPIView):
queryset = Calc.objects.all()
serializer_class = CalcSerializer
def perform_update(self, serializer):
instance = serializer.save()
algorithm = Algorithm.objects.get(pk=self.request.data['algorithm'])
print(algorithm.get_name_display())
提前感谢您的帮助!
答案 0 :(得分:1)
onPressButtonarrived(item.id) {
this.setState({ [item.id +'-disablearrived']: !this.state[item.id] });
this.setState({ [item.id +'-colorarrived']: !this.state[item.id] });
// that should toggle some true false vars for each item.id
}
<View style={{backgroundColor: this.state[item.id +'-colorarrived'] ? '#D6D6D6' : '#E5C454'}}>
<TouchableOpacity
onPress={() => {this.onPressButtonarrived(item.id)}} disabled={!!this.state[item.id +'-disablearrived']}>
<Text>Arrival</Text>
</TouchableOpacity>
是name
,但是CharField
中每个元组的第一个元素是整数这一事实在某种程度上困扰着Django。
尝试将每个元组的第一个元素更改为字符串:
ALGORITHM_NAME
或将ALGORITHM_NAME = (
('0', 'KNeighborsClassifier'),
('1', 'LogisticRegression'),
('2', 'LinearSVC'),
('3', 'GaussianNB'),
('4', 'DecisionTreeClassifier'),
('5', 'RandomForestClassifier'),
('6', 'GradientBoostingClassifier'),
('7', 'MLPClassifier'),
)
字段更改为name
:
IntegerField