当我尝试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)
Run Code Online (Sandbox Code Playgroud)
从Django书中:
如果需要在尚未定义的模型上创建关系,可以使用模型的名称,而不是模型对象本身:
例如:
class MenuItem(model.Models)
title = models.CharField(max_length=200)
submenus = models.ManyToManyField('Menu', blank=True, null=True)
^ ^
Run Code Online (Sandbox Code Playgroud)
具有ManyToManyField的模型无关紧要,但您应该只将其放在其中一个模型中 - 而不是两者.
其中一个模型有多个,另一个使用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)
Run Code Online (Sandbox Code Playgroud)
然后我想要一个MenuItem的菜单:
menu_item_instance.menu_set.all()
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2042 次 |
| 最近记录: |