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")
这是我的模型。我想要的是如何/应该发送响应数据,我的意思是格式。(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
第一种类型的问题是我必须在前端维护这个元组/映射(用于最终用户可视化)以及用于内部映射、api-DB 交互的 id。
从第二种类型,我不知道如果某些 api post/put 一些数据到我的系统,我将如何映射,我不知道这个类别属于哪个 id。
我需要像您这样在 Web 服务开发方面拥有丰富经验的人的建议,可以指导我以最佳方式开发 API,这可能对 future 的新手或学习东西的读者有所帮助。
最佳答案
我个人更希望两者都出现在 API 响应中,例如:
{"author": [1,3,4], "title": "my book", "cat_id": 1, "cat_name": "Sci-Fi"}
原因是,仅 id 本身并不能传递有关类别的太多信息,并且名称在将来是可变的,因此单独使用也没有帮助。
当然,在两者都存在的情况下,我们可以在文档中指定 cat_name
用于装饰目的,而 cat_id
则保持不变。
关于python - Django Choice 领域 Web 服务最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32018147/