我想为以下模型创建一个简单的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"]
}
公共列表全部,列出一个,更新和删除:
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在不久的将来可以通过更多关系进行扩展,例如"关键字关系"用一个简单的字符串字段。
有什么想法吗?
答案 0 :(得分:0)
尝试将基础关键字实施为set的成员。然后,您可以简单地使用每个新关键字调用add
方法,然后根据集合的工作方式,该集合将使其保持唯一的分组。
a = set()
a.add('keyword1')
a.add('keyword2')
a.add('keyword1')
print(a)
输出:
set(['keyword1', 'keyword2'])