2015-06-26 46 views
1

我使用Django來概述大學課程和高中學科要求之間的關係。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(在數學3 OR 45%50%在數學4 )


附加信息:因爲幾門課程可能共享相同的要求(例如, 70%在物理學),但每門課程可能有幾個要求,我打算使用m2m模型。

回答

1

你可以做一個CompoundRequirement具有一定數目的要求,它ORš在一起(使用ManyToManyField),然後每個類都有一些Requirement S和一些CompoundRequirement秒。 ANDs由多個需求來處理,所以你需要處理的是ORs。

+0

謝謝,但是對於「R1 OR(R2 AND R3)」這個工作如何工作,因爲嵌套的AND不能被課程處理? – ZG101

+0

我在想也許是一個CompoundANDRequirement類呢? – ZG101

+0

取決於你想要關係能夠走多深。我真的不知道如何在數據庫中很好地擴展它。 –