get_FIELD_display()未显示正确的值

时间:2019-01-24 13:32:05

标签: python django

我一直试图在我的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())

提前感谢您的帮助!

1 个答案:

答案 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