kak*_*akk 5 python django django-forms django-views
我有一个用于更新用户的表单,错误出现在角色字段上。我正在根据客户过滤角色。我得到了正确的角色值,但无论如何都会弹出错误。
Select a valid choice. That choice is not one of the available choices
视图.py
class UserUpdateView(LoginRequiredMixin, SuccessMessageMixin, UpdateView):
form_class = UserUpdateForm
template_name = 'users/modals/update_profile_modal.html'
success_message = "User updated successfully."
def get_form_kwargs(self):
kw = super().get_form_kwargs()
kw['request'] = self.request
return kw
def get_object(self, *args, **kwargs):
user_id = self.request.session['user_detail']
return TbUser.objects.get(id=user_id)
def form_invalid(self, form):
messages.error(self.request, form.errors)
print(form.errors)
return redirect('user-detail', pk=self.object.pk)
def get_success_url(self):
return reverse('user-detail', kwargs={'pk': self.object.pk})
Run Code Online (Sandbox Code Playgroud)
表格.py
class UserUpdateForm(forms.ModelForm):
email = forms.EmailField()
def __init__(self, request, *args, **kwargs):
super().__init__(*args, **kwargs)
self.request = request
if request.user.customer:
self.fields['department'].queryset = TbDepartment.objects.filter(
customer=request.user.customer)
self.fields['role'].queryset = TbRole.objects.filter(
customer=request.user.customer)
self.fields['username'].required = True
self.fields['real_name'].required = True
self.fields['email'].required = True
self.fields['cellphone'].required = True
self.fields['department'].required = True
self.fields['role'].required = True
class Meta:
model = TbUser
fields = ['username', 'real_name', 'email',
'cellphone', 'department', 'role']
Run Code Online (Sandbox Code Playgroud)
我正在使用此类过滤所有数据,每个客户在表中都有自己的行。
class UserUpdateView(LoginRequiredMixin, SuccessMessageMixin, UpdateView):
form_class = UserUpdateForm
template_name = 'users/modals/update_profile_modal.html'
success_message = "User updated successfully."
def get_form_kwargs(self):
kw = super().get_form_kwargs()
kw['request'] = self.request
return kw
def get_object(self, *args, **kwargs):
user_id = self.request.session['user_detail']
return TbUser.objects.get(id=user_id)
def form_invalid(self, form):
messages.error(self.request, form.errors)
print(form.errors)
return redirect('user-detail', pk=self.object.pk)
def get_success_url(self):
return reverse('user-detail', kwargs={'pk': self.object.pk})
Run Code Online (Sandbox Code Playgroud)
我正在使用渲染表单{{form|crispy}}
{% block modal %}
{% load static %}
{% load crispy_forms_tags %}
<!-- Modal -->
<div class="modal fade" data-backdrop="static" data-keyboard="false" id="tb-user-profile-update-modal" tabindex="-1"
role="dialog" aria-labelledby="exampleModalLabel" aria-hidden="true">
<div class="modal-dialog modal-sm" role="document">
<div class="modal-content">
<form enctype="multipart/form-data" action="{% url 'tb-user-update' pk=user.id %}" method="POST">
<div class="row d-flex justify-content-center">
<div class="col-10">
<fieldset class="form-group mt-2">
{{user.username}}
{% csrf_token %}
{{form|crispy}}
</fieldset>
<div class="form-group">
<button class="btn btn-secondary" type="submit">
<span>Update</span>
</button>
<button class="btn btn-secondary" type="button" data-dismiss="modal">
<span>Close</span>
</button>
</div>
</div>
</div>
</form>
</div>
</div>
</div>
{% endblock modal %}
Run Code Online (Sandbox Code Playgroud)