在我的Django Web应用程序中,我希望使用Django对象创建类似目录结构的内容。
换句话说,目标是构建一个Django模型(例如定义为Box
的模型),该模型可以包含(或简单地与)任意数量的其他Box
对象相关联带有任意数量的Thing
对象。最好的方法是什么?
甚至更好:除了Box
即Thing
,{{1 }}等?
答案 0 :(得分:1)
您想要的是盒子的树形结构,可以通过自引用外键和另一个类(可能是抽象的类)来实现,例如,它代表盒子内的事物:
class Box(models.Model):
name = models.CharField(max_length=200)
parent_box = models.ForeignKey("Box", on_delete=PROTECT, null=True, related_name='children_boxes')
class Thing(models.Model):
name = models.CharField(max_length=200)
box = models.ForeignKey(Box, on_delete=PROTECT, related_name='%(app_label)s_%(class)s')
class Meta:
abstract=True
class Gadget(Thing):
gadget_field = models.CharField(max_length=400)
class Item(Thing):
item_field = models.CharField(max_length=600)