从技术上讲,我很确定“ MyUser”或“ self”都可以使用,只要在任何情况下都是字符串即可。你只是无法通过MyUser实际的课程。
但是,文档始终使用“自我”。使用“自我”不仅可以更清楚地了解实际发生的情况,而且可以防止类名更改。例如,如果你后来更改MyUser
为SomethingElse
,则还需要更新对“ MyUser”
的任何引用。问题在于,由于它是字符串,因此你的IDE不会警告你该错误,因此你丢失它的可能性更大。无论班级的名称是现在还是将来,使用“自我”都可以。
class MyUser(models.Model):
...
blocked_users = models.ManyToManyField("self", blank=True)