一尘不染

Django多对多(m2m)与同一模型的关系

django

我想创建一个与用户类对象之间的多对多关系。

我有这样的事情:

class MyUser(models.Model):
    ...
    blocked_users = models.ManyToManyField(MyUser, blank=True, null=True)

问题是我是否可以在内部使用类引用。还是我必须使用"self"欧洲工商管理学院"MyUser"ManyToManyField?还是有另一种(更好的)方法呢?


阅读 366

收藏
2020-04-02

共2个答案

一尘不染

从技术上讲,我很确定“ MyUser”或“ self”都可以使用,只要在任何情况下都是字符串即可。你只是无法通过MyUser实际的课程。

但是,文档始终使用“自我”。使用“自我”不仅可以更清楚地了解实际发生的情况,而且可以防止类名更改。例如,如果你后来更改MyUserSomethingElse,则还需要更新对“ MyUser”的任何引用。问题在于,由于它是字符串,因此你的IDE不会警告你该错误,因此你丢失它的可能性更大。无论班级的名称是现在还是将来,使用“自我”都可以。

2020-04-02
一尘不染

class MyUser(models.Model):
    ...
    blocked_users = models.ManyToManyField("self", blank=True)
2020-04-02