【发布时间】:2015-12-10 17:07:49
【问题描述】:
我想为以下模型创建一个简单的 REST API:
我有一个名为 Product 的主要实体,其中包含一些字段:名称、价格... 此外,我还有一个名为 Keyword 的相关实体,其中包含一个字段:关键字。
每个产品可以有一个或多个关键字。
我可以很容易地把它翻译成两个 django 模型:
class Product(models.Model):
name = models.CharField("Name of the product", max_length=100)
description = models.TextField("Description of the product")
price = models.IntegerField("Price of the product")
received_at = models.DateField("Received at")
class Keyword(models.Model):
keyword = models.CharField(max_length=50)
product = models.ForeignKey(Product, related_name="keywords")
但是我迷失了序列化程序。
我想要一个像这样的简单动词来创建:
POST /products
{
"name": "My product name",
"description": "My product description",
"price": 40,
"received_at": "2015-12-1",
"keywords": ["keyword1", "keyword2"]
}
还有常见的list all,list one,更新和删除:
GET /products
[{"name": "Product 1"...}, {"name": "Product 2"...}]
GET /products/1
{"name": "Product 1", "description": ...}
PUT /products/1
{
"name": "My product name",
"description": "My product description",
"price": 40,
"received_at": "2015-12-1",
"keywords": ["keyword2"]
}
DELETE /products/1
问题是管理关键字。 创建新产品时会创建所有关键字 当产品更新时,我必须检查哪些关键词是新闻,哪些关键词已被删除。
我还希望我的 API 在不久的将来可以扩展,具有更多的关系,例如带有简单字符串字段的“关键字关系”。
有什么想法吗?
【问题讨论】:
-
由于您想将关键字与产品一起发布,因此您必须手动编写逻辑。 DRF 目前不支持嵌套关系 AFAIK 的 POST 请求。
标签: django django-rest-framework