<p>因此,据我所知,Section类中的ManyToManyField实际上并没有在Section数据库表中保存任何DocumentType数据,而是保存了与DocumentType的关系。
因此,如果我想访问节的document_类型,就必须通过DocumentType对象查找section对象,反之亦然。在</p>
<p>例如:</p>
<pre><code>>>> DocumentType.objects.get(name="WAN").section_set.all()
[<Section: ALL 1>, <Section: ALL 2>, <Section: WAN 5>, <Section: WAN 6>]
>>> DocumentType.objects.get(name="Campus LAN").section_set.all()
[<Section: ALL 1>, <Section: ALL 2>, <Section: Campus LAN 3>, <Section: Campus LAN 4>]
</code></pre>
<p>或者:</p>
^{pr2}$
<p>或者:</p>
<pre><code>>>> DocumentType.objects.filter(section__name__startswith="Campus")
[<DocumentType: Campus LAN>, <DocumentType: Campus LAN>]
</code></pre>
<p>尽管如此:</p>
^{4}$
<p>引发<code>ValueError: invalid literal for int() with base 10: 'WAN'</code>,因为节文档类型m2m字段下没有数据,只有关系。所以情况仍然如此:</p>
<pre><code>>>> original_sections = Section.objects.all()
>>> for a in original_sections:
... print a.document_type_s
...
lld.DocumentType.None
lld.DocumentType.None
lld.DocumentType.None
lld.DocumentType.None
lld.DocumentType.None
lld.DocumentType.None
lld.DocumentType.None
lld.DocumentType.None
</code></pre>
<p>更多信息<a href="https://django.readthedocs.org/en/latest/topics/db/examples/many_to_many.html" rel="nofollow">here</a>。在</p>