【发布时间】:2018-05-17 17:47:03
【问题描述】:
问题描述
分类学是基于共同特征定义和命名生物有机体群体的科学。有机体被归类为分类群(单数:分类单元),这些组被赋予分类等级。现代使用的主要等级是域、界、门、类、目、科、属和种。 更多关于维基百科中Taxonomy 和Taxonomic ranks 的信息。
按照 Wikipedia 中 Taxonomic rank 文章中 red fox 的示例,我需要创建一个这样的 JSON 输出:
{
"species": "vulpes",
"genus": "Vulpes",
"family": "Canidae",
"order": "Carnivora",
"class": "Mammalia",
"phylum": "Chordata",
"kingdom": "Animalia",
"domain": "Eukarya"
}
由于 Django REST 框架根据字段名称创建键,因此分类等级 class(示例中为粗体)会出现问题,因为它是 Python 中的保留字,不能用作变量名。
我尝试过的
在 Django 中创建的模型类如下所示:
class Species(models.Model):
species = models.CharField()
genus = models.CharField()
family = models.CharField()
# class = models.CharField() - class is reserved word in Python
# class_ = models.CharField() - Django doesn't allow field names
# ending with underscore. That wouldn't be either a satisfying solution.
# further fields
问题
是否有任何可能的方法来解决此问题并生成所需的输出? 如果不是,解决此问题的最佳做法是什么?
【问题讨论】:
-
请参阅this question 了解如何重命名 django-rest-framework 中的字段。您可以在 Django 模型字段中使用
species_class或klass之类的内容。 -
@Alasdair 非常感谢,朋友!在序列化方法
to_representation的帮助下,我找到了解决方案。我现在调用的模型字段class_name,这并不麻烦,因为客户端只关心输出。你能添加几行作为答案,所以我可以投票/接受它。 -
很高兴有帮助。如果您添加自己的答案可能会更好,因为您可以展示您为使其正常工作所做的实际工作。
标签: python django python-3.x django-rest-framework bioinformatics