【发布时间】:2019-06-18 06:13:48
【问题描述】:
我一直在尝试在我的 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())
提前感谢您的帮助!
【问题讨论】:
-
This 可能会对你有所帮助。
-
可能
name是CharField但ALGORITHM_NAME中每个元组的第一个元素是整数这一事实在某种程度上困扰着Django?尝试将每个元组的第一个元素更改为字符串或将name字段更改为IntegerField -
ivissani,不知道为什么,但是将数字更改为字符串有帮助!
-
我会把评论变成答案