sql& django:在数据库级别进行聚合

时间:2015-06-18 08:21:49

标签: mysql django django-models

您好我的模特中有以下情况:

class Package(models.Model):
    name

class SetOfItems(models.Model)
    name

class Item(models.Model):
    package(FK)
    setofitems(FK)

我想解决的问题是简化SetOfItems的查询。例如。如果我需要从SetOfItems获取包名,我需要写类似的东西 SetOfItems.objects.values('item__package__name'),实际上不起作用,在管理站点中很好(例如,如果我在那里创建一个额外的字段)。

所以我要找的是在SetOfItem模型中存储有关Packages的信息而不建立直接的关系(因为我认为如果我将FK放在那里,数据完整性会受到影响,例如,它可能会在包内的Item和另一个在SetOfItems中)..

所以也许有可能有SQL视图,或类似的东西......有一个表列自动从其他表预填充?或其他什么?

1 个答案:

答案 0 :(得分:1)

Item是Package和SetOfItems之间多对多关系的直通表。所以你应该这样声明:

class SetOfItems(models.Model):
    packages = models.ManyToManyField(Package, through='Item')

这根本不会改变您的实际表结构,但它允许您执行my_package.setofitems.all()

相关问题