如何在Django对象之间建立正确的关系

时间:2017-05-26 11:31:22

标签: python django django-rest-framework

我有两个模型:类别和项目。项目可以有2个或更多类别,所以我需要从我创建的项目中获得类别(可能是一对多)的关系。但是,我还需要获取与某个类别(或类别)相关的项目,可能是这样的: http://example.com/api/items?category_id=5

任何人都可以建议我如何实现这一目标?感谢。

3 个答案:

答案 0 :(得分:1)

由于某个项目可能属于多个类别,并且某个类别可能在CategoryItem之间有多个项目,因此模型必须是Many-to-Many关系,您可以按如下方式定义:

class Category(models.Model):
    name = models.CharField(max_length=30)
    .....

class item(models.Model):
    ....
    categories = modles.ManyToManyField(Category)

docs中,您可以看到可以使用Python API工具执行的操作的更多详细信息。

答案 1 :(得分:1)

我相信,你在物品和类别之间有很多关系

class Category:
    .....

class Item:
    category = ManytoMany relation to Category

在这种情况下,您可以提取与类别相关的项目,如下所示:

假设您将Category对象设为c1

 c1.item_set.all()

此处c1 = Category.objects.get(id=5)

答案 2 :(得分:1)

我建议的最佳做法是,在项目表中添加多对多类别表格。

例如:

class Category(models.Model):
    # Write here your fields name

class Item(models.Model):
    categories = models.ManyToManyField(Category)