我正在尝试构建一个非常通用的模型,需要嵌套的灵活性。这是一个简单的例子。
Work Symphony No.1
|_Work |_Movement 1
| |_Work | |_Allegro
| |_Work | |_Largo
| |
|_Work |_Movement 2
|_Work |_Poco Allegretto
我希望我能做什么会引发语法错误,因为Work显然还没有定义它不能是ForeignKey。
class Work(models.Model):
work_name = models.CharField('Work Name', max_length=100)
work_parent = models.ForeignKey(Work)
我在考虑使用这样的基类:
class BaseWork(models.Model):
pass
class Work(BaseWork):
name = models.CharField(max_length=100)
work_parent = models.ForeignKey(BaseWork)
我相信通过这样做,我可以让弗莱成为他自己的祖父,但是有没有'正确'的方法呢?
答案 0 :(得分:1)
谢谢@Seether。
class Work(BaseWork):
name = models.CharField(max_length=100)
work_parent = models.ForeignKey('self', null=True)
我很好奇是否以及为什么这会是不好的做法。当然必须有很多模型需要嵌套吗?他们是否对结构进行硬编码?