2016-03-01 79 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) 
相关问题