擅长:python、mysql、java
<p>您的思路是正确的,但您的语句<code>user = kwargs.pop('user')</code>的位置不正确。它应该在<code>super(NewOrderForm, self).__init__(*args, **kwargs)</code>之前调用。发生此错误的原因是,在基窗体类中,<code>__init__()</code>方法不希望接受您的<code>user</code>参数。因此,我们需要首先弹出它并将其存储在一个变量中,然后调用<code>super</code>。在</p>
<p>修正后:</p>
<pre><code>class NewOrderForm(forms.ModelForm):
class Meta:
model = WorkOrder
fields = ['store_internal_order',
'sector',
'article',
'serial',
'work',
'article_details',
'cash_advance',
'initial_price'
]
def __init__(self, *args, **kwargs):
# user should be popped here
user = kwargs.pop('user', None)
super(NewOrderForm, self).__init__(*args, **kwargs)
# just in case your user is empty
if user and user.is_staff:
del self.fields['store_internal_order']
</code></pre>