Django 如果数据库中存在数据,则禁用表单字段
我想输入用户名并禁用用户名字段(如果在表单初始化期间已经存在) 如果数据库中存在用户名,我希望禁用用户名文本字段Django 如果数据库中存在数据,则禁用表单字段,django,forms,django-rest-framework,Django,Forms,Django Rest Framework,我想输入用户名并禁用用户名字段(如果在表单初始化期间已经存在) 如果数据库中存在用户名,我希望禁用用户名文本字段 class AppUserForm(forms.ModelForm): class Meta: model=AppUser fields=['username','password'] def __init__(self, *args, **kwargs): super().__init__(*args, **kwa
class AppUserForm(forms.ModelForm):
class Meta:
model=AppUser
fields=['username','password']
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
user_id = self.request.POST.get('user_id')
if AppUser.objects.filter(usernbame=user_id).exists():
self.fields['username'].disabled = True
Views.py
#u=AppUser.objects.get(pk=id)
if AppUser.objects.filter(stu_id=dstu_id).exists():
u=AppUser.objects.get(stur_id=stu_id)
username=u.username
password=u.password
form = AppUserAuthForm(initial={'username':username, 'password':password})
else:
form = AppuserAuthForm()
如果要访问
请求。在表单的\uuuu init\uuuu
中发布数据,则需要在创建表单实例时显式传递请求。在调用super()
之前,需要从kwargs中删除int,否则将引发与意外关键字相关的错误。所以在你看来
form = AppUserAuthForm(initial={'username': username}, request=request)
在您的表单的\uuuuu init\uuuu
:
def __init__(self, *args, **kwargs):
request = kwargs.pop('request')
super().__init__(*args, **kwargs)
user_id = request.POST.get('user_id')
# Your other code
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
if self.instance.pk:
self.fields['username'].disabled = True
然而,当您使用模型表单时,为什么不使用模型表单功能,而不是全部手动完成呢
你的观点可能是
if AppUser.objects.filter(stu_id=dstu_id).exists():
u=AppUser.objects.get(stur_id=stu_id)
form = AppUserAuthForm(instance=u)
else:
form = AppuserAuthForm()
您的表单的\uuuuu init\uuuuu
:
def __init__(self, *args, **kwargs):
request = kwargs.pop('request')
super().__init__(*args, **kwargs)
user_id = request.POST.get('user_id')
# Your other code
def __init__(self, *args, **kwargs):
super().__init__(*args, **kwargs)
if self.instance.pk:
self.fields['username'].disabled = True
如果它是一个注册表单,如果数据库中已经存在用户名,您可以抛出错误消息否,在我的情况下不需要此功能。我只想在禁用的文本字段中呈现用户名(如果存在),否则可编辑或用户可以在输入字段中输入新的用户名。您的用户未登录用户,那么您将如何获取用户id或用户名?请检查views.py中的逻辑,何时使用用户名和密码初始化它,用户名应该处于禁用状态。非常感谢。第二个选择对我很有效。伟大的