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 将保持不变。