如何创建基于其他字段计算的Django模型字段?

2024-09-30 01:26:35 发布

您现在位置:Python中文网/ 问答频道 /正文

我将用一个简单的例子来描述我的问题。假设我有Item类型的项,每个项都与某个类型的Category相关。现在,我可以将任意两个项目合并为ItemCombo类型的itemcombo。这个itemcombo与一个名为ComboCategory的特定类别相关。ComboCategory是基于项目相关的类别的,因此我不喜欢在ItemCombo中硬编码combocategory,以防项目类别发生变化。我是否可以在ItemCombo中使combocategory成为一个计算及时的虚拟字段?在

class Category(models.Model):
    value = models.CharField(max_length=1)


class Item(models.Model):
    value    = models.CharField(max_length=10)
    category = models.ForeignKey(Category)


class ComboCategory(models.Model):
    category1 = models.ForeignKey(Category)
    category2 = models.ForeignKey(Category)
    value = models.CharField(max_length=1)


class ItemCombo(models.Model):
    item1         = models.ForeignKey(Item)
    item2         = models.ForeignKey(Item)
    combocategory = models.ForeignKey(ComboCategory)

Tags: 项目类型modelvaluemodelsitem类别max
2条回答

问题是您只能对存储在数据库中的字段执行查询。现在,您应该查看aggregation来及时评估ItemCombo并对其进行筛选。在

模型类是完整的Python类,因此可以向它们添加属性、方法和属性:

class ItemCombo(models.Model):
    item1         = models.ForeignKey(Item)
    item2         = models.ForeignKey(Item)

    @property
    def combocategory(self):
        return .. # some mumbo-jumbo of item1 and item2

相关问题 更多 >

    热门问题