考虑我有一个带有字段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。
答案 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)