Django REST框架和相关模型有一个字段

时间:2015-12-10 17:07:49

标签: django django-rest-framework

我想为以下模型创建一个简单的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在不久的将来可以通过更多关系进行扩展,例如"关键字关系"用一个简单的字符串字段。

有什么想法吗?

1 个答案:

答案 0 :(得分:0)

尝试将基础关键字实施为set的成员。然后,您可以简单地使用每个新关键字调用add方法,然后根据集合的工作方式,该集合将使其保持唯一的分组。

a = set()
a.add('keyword1')
a.add('keyword2')
a.add('keyword1')
print(a)

输出:

set(['keyword1', 'keyword2'])