擅长:python、mysql、java
<p>引擎盖下的create函数看起来不像这样:</p>
<pre class="lang-py prettyprint-override"><code>def create(self, **data):
pass
</code></pre>
<p>如您所见,您有一个位置参数<code>self</code>,另一个只是一个关键字字典。当您这样调用此函数时:</p>
^{pr2}$
<p>您要传递两个位置参数一个是<code>objects</code>这是python处理类和方法的方式,另一个是<code>my_form.cleaned_data</code>,但是函数只导出一个位置参数和任意数量的命名参数。
在第二次呼叫中:</p>
<pre class="lang-py prettyprint-override"><code>Product.objects.create(**my_form.cleaned_data)
</code></pre>
<p>假设<code>my_form.cleaned_data</code>如下所示:</p>
<pre><code>{
'age': 1,
'name': 'good product'
}
</code></pre>
<p>所以第二次通话的等式是</p>
<pre class="lang-py prettyprint-override"><code>Product.objects.create(name='good product', age=1)
</code></pre>
<p>如您所见,您只有一个位置参数<code>objects</code>和两个命名参数。
在创建函数中,您可以引用如下数据:</p>
<pre class="lang-py prettyprint-override"><code>def create(self, **data):
name = data['name']
age = data['age']
</code></pre>