我想创建以下模型简单的REST API:Django的REST框架,并与一个字段相关车型
我叫产品,其中一些字段主要实体:名称,价格...... 我也有一个名为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"]
}
和公共列表中的所有,列表中的一个,更新和删除:
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现在不支持嵌套关系POST请求AFAIK。 –