gpt4 book ai didi

python - Django - 如何排除表单字段 View ?

转载 作者:太空宇宙 更新时间:2023-11-04 01:03:08 26 4
gpt4 key购买 nike

如果用户具有特定属性,我无法排除某个字段。

我尝试使用 this tip 之后的 is_staff 选项进行测试,但我无法让它发挥作用。我收到错误:__init__() 得到了一个意外的关键字参数“user”

如果用户是员工,谁能告诉我如何排除某些字段?

这是我在 forms.py 中的表单

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):
super(NewOrderForm, self).__init__(*args, **kwargs)
user = kwargs.pop('user')
if user.is_staff:
del self.fields['store_internal_order']

这是我的看法

def new(request):
if not request.user.is_authenticated():
return redirect('auth_login')

title = "Nueva Orden de trabajo"
store = request.user.userprofile.fk_store
form = NewOrderForm(request.POST or None)
context = {"title": title,
"form": form}

if 'dni_cuit' in request.session:
dni_cuit = request.session.get('dni_cuit')
if Client.objects.get(dni_cuit=dni_cuit):
dni_cuit = request.session.pop('dni_cuit')
client = Client.objects.get(dni_cuit=dni_cuit)

context.update({'client': client})
request.session['dni_cuit'] = dni_cuit
else:
return redirect('new_client')

# Si el formulario es valido guardamos el contenido
if form.is_valid():
...
...
...

非常感谢谁能帮助我。

抱歉我的英语不好!

最佳答案

你在正确的轨道上,但是你的声明 user = kwargs.pop('user') 是在错误的位置。它应该在 super(NewOrderForm, self).__init__(*args, **kwargs) 之前调用。发生此错误的原因是因为在基本表单类中,__init__() 方法不期望接受您的user 参数。因此,我们需要先弹出它并将其存储在一个变量中,然后调用 super

修正后:

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']

关于python - Django - 如何排除表单字段 View ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31932560/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com