你好,我的模特有以下情况:

class Package(models.Model):
    name

class SetOfItems(models.Model)
    name

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

我试图解决的问题是简化来自setofitem的查询。例如,如果我需要从SetOfItems获取包名,我需要编写如下内容
SetOfItems.objects.values(“item\uu package\uu name”)在管理站点中实际上不起作用(例如,如果我在那里创建了一个额外的字段)。
所以我要找的是在SetOfItem模型中存储有关包的信息,而不建立直接关系(因为我认为如果在那里放置一个FK,数据完整性将受到影响,例如,在Item中可以有一个包,在SetOfItem中可以有另一个包)。。
所以也许有一些可能有SQL视图,或者类似的东西。。。是否自动从其他表中预填充表列?或者别的什么?

最佳答案

Item是包和setofitem之间多对多关系中的through表。所以你应该这样声明:

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

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

关于mysql - sql&django:在数据库级别进行聚合,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30910066/

10-09 12:50