python - 如何创建基于其他字段进行评估的 Django 模型字段?

标签 python django django-models

我将尝试用一个简单的例子来描述我的问题。假设我有 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/

相关文章:

django - 最新的 Django-1.7 版本的 "App-loading refactor"功能有什么好处?

Django:排序对象中的列表

django - 如何将数据添加到数据库?

python - Django:模型和字段在元类中做什么?

python - Django 单元测试失败,找不到表

python - 优化暴力破解方法获得无重复字符的最长子串

django -/accounts/login/id 处的 TypeError 必须是 (str, unicode, ObjectId) 的实例,而不是 <type 'int' >

python - 具有不同包含路径的自定义 Python 异常

Python连续解析控制台输入

python - 如何让我的 pygade 代码运行得更快?它仅以 4fps 运行