Django中布尔的属性组合

时间:2015-06-26 04:10:47

标签: python django many-to-many boolean-logic

我正在使用Django来概述大学课程与高中学科要求之间的关系。

到目前为止,我有以下模型:

class Course(models.Model):
   title = models.CharField(max_length=100)    #(e.g. Bachelor of _____)
   ft_years = models.SmallPositiveIntegerField()    #years of full time study

class Requirement(models.Model):    
   subject = models.CharField(max_length=50)    #(e.g. Mathematics 3)
   score = models.DecimalField(max_digits=3)    #(e.g. 70)       
   percent = models.NullBooleanField()    #True if score is in percent

我的问题是,如何为每个课程添加一个布尔组合要求?

例如:

  

物理学士(课程)具有以下要求:
  (70%在物理学上) AND (50%在数学3 OR 45%在数学4)

其他信息:由于多个课程可能共享相同的要求(例如物理学中的70%)但每个课程可能有多个要求,我计划使用m2m模型。

1 个答案:

答案 0 :(得分:1)

您可以制作一个CompoundRequirement,其中OR具有一定数量的要求(ManyToManyField),然后每个类都有一些Requirement和一些CompoundRequirement秒。 ANDs由多个要求处理,所以你需要处理的只是OR。