Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在Django模型中的定义之前使用类_Python_Django - Fatal编程技术网

Python 在Django模型中的定义之前使用类

Python 在Django模型中的定义之前使用类,python,django,Python,Django,当我尝试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)

当我尝试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)
发件人:

如果需要在尚未创建的模型上创建关系 定义后,可以使用模型的名称,而不是模型 对象本身:

例如:

编辑:
如(以及如中所述):

哪个模型有ManyToManyField并不重要,但是您应该只将它放在其中一个模型中,而不是同时放在两个模型中


其中一个模型有多对多模型,另一个模型使用Django的反向关系(https://docs.djangoproject.com/en/dev/topics/db/queries/#following-关系(向后)

那么我将如何设置它:

class Menu(Container):
    links = models.ManyToManyField(MenuItem)

class MenuItem(model.Models)
    title = models.CharField(max_length=200)
然后当我想要菜单项的菜单时:

menu_item_instance.menu_set.all()

太好了,谢谢。我在读《v2》这本书,但我错过了这些信息。你认为弗朗西斯·亚科尼略的解决方案怎么样?这是真的,但在关系的两端定义许多人是错误的。Francis有正确的解决方案。如果你想要一个树结构,考虑一下使用MPTT(修改的前序树遍历)它非常棒,我用它在我的公寓页面上拥有继承权。你认为Adam Bernier的解决方案怎么样?老实说,我不知道他的诀窍,我认为在你需要它的时候归档是很好的。-然而,在这种情况下,我仍然坚持我的答案。
menu_item_instance.menu_set.all()