擅长:python、mysql、java
<p>我不确定我是否理解这个问题。在</p>
<p>通过这样做:</p>
<pre><code>class Child:
guardians = models.ManyToManyField('Guardian', related_name='children')
class Guardian:
.... some other fields
# children = models.ManyToManyField(Child) < - not needed
</code></pre>
<p>就像说“一个孩子可以有很多监护人,一个监护人可以有很多孩子”。你呢
不必在两个模型中都声明它。在</p>
<p>另外,django在幕后创建了第三个(中间)表。因为
这就是在RDBMS中对许多关系进行建模的方法。在</p>
<p>您希望<strong>显式地</strong>创建中间模型的唯一原因是
必须添加额外的信息来描述特定的多人关系。
i、 e</p>
^{pr2}$
<p>在这种情况下,你必须知道,既然你声明了一个显式的中间模型,
这是在监护人和孩子之间建立关系时使用的模型。在</p>
<p>例如</p>
<pre><code>ChildGuardianMembership.objects.create(child=child_inst, guardian=guardian_inst)
</code></pre>
<p>在多个关系(如上所述)上添加额外字段的描述是<a href="https://docs.djangoproject.com/en/1.4/topics/db/models/#extra-fields-on-many-to-many-relationships">here</a></p>