Django ORM最佳实践模型取决于一个领域

时间:2016-03-01 17:55:39

标签: django django-models orm django-orm

考虑我有一个带有字段attrib_type的模型Attrib,它为我提供了我可能收到的输入类型。对于类型“A”,我为“C”AttribC创建了“B”AttribB的AttribA。它们的创建是为了分别保留每种输入。在这些投入的基础上,我需要创造就业机会。我想出了:

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)

这是一个好方法还是应该以不同的方式完成?如果我可能需要定期为用户检索Jobs和Attrib,那么设计是否仍然保持良好状态?我正在使用MySQL。

1 个答案:

答案 0 :(得分: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)