我将尝试用一个简单的例子来描述我的问题。假设我有 Item
类型的项目,并且每个项目都与特定类型的 Category
相关。现在我可以将任意两个项目组合成 ItemCombo
类型的 itemcombo。此 itemcombo 与名为 ComboCategory
的特定类别相关。 ComboCategory
基于项目相关的类别,因此我不热衷于在 ItemCombo
中对 combocategory
进行硬编码,以防项目类别将会改变。我可以以某种方式使 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)
最佳答案
您的模型类是完整的 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
关于python - 如何创建基于其他字段进行评估的 Django 模型字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3804502/