我会试着用一个简单的例子来描述我的问题。假设我有Item
类型的物品,每个物品都与某种类型的Category
相关。现在我可以将任意两件物品合并成ItemCombo
类型的物品。该itemcombo涉及到一个名为ComboCategory
的类别。 ComboCategory
基于这些项目与哪些类别有关,因此我不希望对ItemCombo
中的combocategory
进行硬编码,以防项目类别发生变化。我能以某种方式使combocategory
成为ItemCombo
中的一个虚拟字段,它恰好可以及时评估吗?如何创建基于其他字段进行评估的Django模型字段?
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)
我已经试过这个,它不能解决问题,因为我无法以这种方式进行查询,例如筛选某个combocategory的所有组合。 – bennedich 2010-09-27 16:07:02
是的,没错,您无法查询此属性。查询是以字段的形式针对存储在数据库中的数据完成的。 – 2010-09-27 17:37:56