Django:有啥区别(rel & field)

Posted

技术标签:

【中文标题】Django:有啥区别(rel & field)【英文标题】:Django: what is the difference (rel & field)Django:有什么区别(rel & field) 【发布时间】:2011-07-10 04:02:32 【问题描述】:

Django的models.ManyToManyFieldmodels.ManyToManyRel有什么区别?我对这些东西感到困惑。

【问题讨论】:

你想改变 django 本身吗? @hop 不,这只是自然兴趣) 我们还知道,如果您选择ManyToManyField,则会创建一个额外的表,但ManyToManyRel 【参考方案1】:

ManyToManyField 使用ManyToManyRel 来实现它扩展的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

我很高兴这里的绝大多数问题都是可以通过查看参考资料和文档来回答的问题。研究和分享想法并挖掘“不供外部使用”的代码是很有趣的。我知道如何开始回答这个问题,如果我不这样做,我就不会写任何东西。好问题,伙计!

【讨论】:

【参考方案2】:

如果您通过深入研究源代码发现了 ManyToManyRel,则可以阅读该类的文档字符串。它没有记录在任何地方 - 故意的,因为它不是供外部使用的。它当然不是用来定义模型之间的实际字段关系。

【讨论】:

我查看了源代码并发现ManyToManyRel 用于ManyToManyField 的关系查找。我也尽可能准确地遵循实际文档)。 请注意,提问者可能已经看到它在 ide 的自动完成框中弹出。 如果我们一直只关注文档,我们大多数人都会迷失方向。 我使用 Eclipse + PyDev 遇到了同样的问题,并找到了未记录的 ManyToManyRel 建议。这根本不是一个微不足道的问题。 哇...因为这个答案,我才意识到 Python 中没有私有方法(或其他任何方法)。疯了,我告诉你,疯了!

以上是关于Django:有啥区别(rel & field)的主要内容,如果未能解决你的问题,请参考以下文章

path() 和 re_path() 有啥区别?

南迁移和 django 迁移有啥区别?

使用 Django 重定向和 HttpResponseRedirect 有啥区别?

Django 1.8 - migrate 和 makemigrations 有啥区别?

django.conf.settings 和导入设置有啥区别吗?

django OneToOneField 和 ForeignKey 有啥区别?