我将尝试用一个简单的例子来描述我的问题。假设我有Item
类型的项目,并且每个项目都与某种类型的Category
相关。现在我可以将任意两个项目组合成ItemCombo
类型的itemcombo。此itemcombo涉及名为ComboCategory
的特定类别。 ComboCategory
基于项目与哪些类别相关,因此,如果项目类别发生变化,我不会热衷于对combocategory
中的ItemCombo
进行硬编码。我可以以某种方式使combocategory
ItemCombo
中的虚拟字段及时评估吗?
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)
答案 0 :(得分:2)
您的模型类是完整的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
答案 1 :(得分:0)
问题是您只能对存储在数据库中的字段进行查询。现在,您应该查看aggregation,以便及时评估您的ItemCombo并对其进行过滤。