擅长:python、mysql、java
<p>在表单子类中,使用<a href="https://docs.djangoproject.com/en/2.2/ref/forms/fields/#modelmultiplechoicefield" rel="nofollow noreferrer">ModelMultipleChoiceField</a>:</p>
<pre><code>class NovoProduto(forms.Form):
codigo = forms.CharField(label='codigo', max_length=254)
produto_desc = forms.CharField(label='produto_desc', max_length=100)
tipo = forms.CharField(label='tipo', max_length=2)
estrutura = forms.ModelMultipleChoiceField(queryset=Produto.objects.order_by('id')[:20])
</code></pre>
<p>M2M字段似乎是一个自引用(除非您有两个名为<code>Produto</code>的模型),因此您可能希望从select选项列表中排除当前产品。你知道吗</p>
<p>您可以在窗体的构造函数中修改ModelMultipleChoiceField的查询集:</p>
<pre><code> def __init__(*args, **kwargs):
super().__init__(*args, **kwargs)
if self.instance and self.instance.id:
self.fields['estrutura'].queryset = Produto.objects.exclude(id=self.instance.id).order_by('id')[:20]
</code></pre>