2016-03-01 60 views
0

考慮我有一個模型Attrib,它帶有一個字段attrib_type,它爲我提供了可能接收的輸入類型。對於類型「A」,我創建了AttribA,對於「B」AttribB,對於「C」AttribC。它們的創建是爲了分別爲每種類型保留投入。在這些投入的基礎上,我需要創造就業機會。我已經拿出了:Django ORM根據不同領域的模型的最佳做法

class Attrib(models.Model): 
    user = models.ForeignKey(User) 
    attrib_type = models.CharField(max_length=2) 


class AttribA(models.Model): 

    some_property_a = models.CharField(max_length=50) 
    attrib = models.ForeignKey(to='Attrib', 
             related_field='a') 


class AttribB(models.Model): 

    some_property_b = models.CharField(max_length=50)   
    attrib = models.ForeignKey(to='Attrib', 
            related_field='b') 

class AttribC(models.Model): 
    some_property_c = models.CharField(max_length=50) 
    attrib = models.ForeignKey(to='Attrib', 
            related_field='c') 

class Job(models.Model): 
    some_property_job = models.CharField(max_length=50) 
    attrib = models.ForeignKey(to='Attrib', 
            related_name='jobs') 
    status = models.CharField(max_length=2) 

這是一個好方法或應該以不同的方式完成嗎?如果我可能需要定期爲用戶檢索作業和屬性,設計是否仍然有效?我正在使用MySQL。

+0

它你想要做什麼還不是很清楚,但你的模型似乎很奇怪,我會建議: – Marc

回答

0

這不是很清楚你到底想要做的,但你的模型似乎很奇怪,我建議:

class Attrib(models.Model): 
    user = models.ForeignKey(User) 
    attrib_type = models.CharField(max_length=2) 

    Meta: 
     abstract=True 

class AttribImpl(Attrib): 
    some_property = models.CharField(max_length=50)