Django: rel和field有什么区别

63 投票
2 回答
13687 浏览
提问于 2025-04-16 13:08

在Django中,models.ManyToManyFieldmodels.ManyToManyRel有什么区别呢?我对这些东西有点困惑。

2 个回答

-19

如果你是通过查看源代码发现了ManyToManyRel这个东西,你可以看看这个类的文档字符串。这个内容并没有在任何地方被正式记录下来——这是故意的,因为它并不是给外部使用的。它绝对不是用来定义模型之间实际字段关系的。

79

ManyToManyRel是ManyToManyField用来实现多对多关系的一个类,它是Field类的一个扩展。如果你想创建一个新的字段类,这个类继承自Field类,并且包含多对多关系,那么这个类可能会对你有帮助。不过,通常情况下,你不应该在你的模型中使用这个类(如果你的编辑器列出了可用的调用,你会看到相关的提示)。

你可以查看Field类的详细信息:https://github.com/django/django/blob/master/django/db/models/fields/__init__.py,还有ManyToManyRel类和ManyToManyField类的详细信息:https://github.com/django/django/blob/master/django/db/models/fields/related.py

我很高兴这里大多数问题都可以通过查阅参考资料和文档来解答。研究、分享想法以及深入了解那些“不能外部使用”的代码是很有趣的。我知道如何开始回答这个问题,如果我不知道,我也不会写这些。好问题,兄弟!

撰写回答