当我尝试syncdb时,我收到错误菜单不是有效的类名。
我如何解决这种关系案例:
class MenuItem(model.Models)
title = models.CharField(max_length=200)
submenus = models.ManyToManyField(Menu, blank=True, null=True)
class Menu(Container):
links = models.ManyToManyField(MenuItem)
答案 0 :(得分:8)
如果您需要在尚未使用的模型上创建关系 定义后,您可以使用模型的名称,而不是模型 对象本身:
E.g:
class MenuItem(model.Models)
title = models.CharField(max_length=200)
submenus = models.ManyToManyField('Menu', blank=True, null=True)
^ ^
编辑:
正如Francis mentions(和the documentation中所写的那样):
哪个模型具有ManyToManyField并不重要,但您应该只将其放在其中一个模型中 - 而不是两个模型。
答案 1 :(得分:6)
其中一个模型有多个,另一个使用Django的反向关系(https://docs.djangoproject.com/en/dev/topics/db/queries/#following-relationships-backward)
所以我要如何设置它:
class Menu(Container):
links = models.ManyToManyField(MenuItem)
class MenuItem(model.Models)
title = models.CharField(max_length=200)
然后我想要一个MenuItem的菜单:
menu_item_instance.menu_set.all()