Web 服务中 Django Choice 领域的最佳实践
Django Choice field best practice in web services
class Book(models.Model):
CATEGORY = (
(1, "Sci-Fi"),
(2, "Romance"),
(3, "Fantasy"),
# more categories...
)
title = models.CharField(max_length=255)
cat = models.IntegerField(choices=CATRGORY, null=True, blank=True)
author = models.ManyTboManyField('User', related_name="book")
这是我的模型。我想要的是如何do/should发送响应数据,我的意思是格式。(JSON)
例如(对一本书的回应)
{"author": [1,3,4], "title": "my book", "cat": 1, 'bookid': 23 }
或
{"author": [1,3,4], "title": "my book", "cat": "Sci-Fi", 'bookid': 23 } #slugify name
第一种类型的问题是我必须在前端维护这个 tuple/mapping(用于最终用户可视化)和内部映射的 id,api-DB 交互。
从第二种类型我不知道如果一些 api post/put 一些数据到我的系统我将如何映射,我不知道这个类别属于哪个 ID。
我需要像您这样在 Web 服务开发方面具有丰富经验的人的建议,他们可以指导我以最佳方式开发 API,这可能对未来的新手或正在学习东西的读者有所帮助。
就我个人而言,我希望两者都出现在 API 响应中,例如:
{"author": [1,3,4], "title": "my book", "cat_id": 1, "cat_name": "Sci-Fi"}
原因是,仅仅 id 本身并不能传递关于类别的太多信息,而且名称在未来是可变的,所以仅靠它也无济于事。
当然,如果两者都存在,我们可以在文档中指定 cat_name
用于装饰目的,而 cat_id
将保持不变。
class Book(models.Model):
CATEGORY = (
(1, "Sci-Fi"),
(2, "Romance"),
(3, "Fantasy"),
# more categories...
)
title = models.CharField(max_length=255)
cat = models.IntegerField(choices=CATRGORY, null=True, blank=True)
author = models.ManyTboManyField('User', related_name="book")
这是我的模型。我想要的是如何do/should发送响应数据,我的意思是格式。(JSON)
例如(对一本书的回应)
{"author": [1,3,4], "title": "my book", "cat": 1, 'bookid': 23 }
或
{"author": [1,3,4], "title": "my book", "cat": "Sci-Fi", 'bookid': 23 } #slugify name
第一种类型的问题是我必须在前端维护这个 tuple/mapping(用于最终用户可视化)和内部映射的 id,api-DB 交互。
从第二种类型我不知道如果一些 api post/put 一些数据到我的系统我将如何映射,我不知道这个类别属于哪个 ID。
我需要像您这样在 Web 服务开发方面具有丰富经验的人的建议,他们可以指导我以最佳方式开发 API,这可能对未来的新手或正在学习东西的读者有所帮助。
就我个人而言,我希望两者都出现在 API 响应中,例如:
{"author": [1,3,4], "title": "my book", "cat_id": 1, "cat_name": "Sci-Fi"}
原因是,仅仅 id 本身并不能传递关于类别的太多信息,而且名称在未来是可变的,所以仅靠它也无济于事。
当然,如果两者都存在,我们可以在文档中指定 cat_name
用于装饰目的,而 cat_id
将保持不变。