这看起来很奇怪
我在 Django 中有以下模型:
class CustomUser(AbstractUser):
first_name = models.CharField(_("first name"), max_length=20)
last_name = models.CharField(_("last name"), max_length=20)
email = models.EmailField(_('email address'), blank=False, unique=True)
validated_account = models.BooleanField(_('validated account'), blank=False, default=False)
phone = PhoneNumberField(null=False, blank=False, unique=True)
def __str__(self):
return f"{self.first_name} {self.last_name}"
我有以下表格来编辑模型:
class CustomUserChangeForm(UserChangeForm):
password = None
class Meta(UserChangeForm.Meta):
model = CustomUser
fields = ["first_name", "last_name", "email", "phone", "username"]
这是我编辑模型的看法:
@user_passes_test(lambda u: u.is_authenticated, "users:login")
def edit_profile(request):
if request.method == "POST":
print(request.POST)
form = CustomUserChangeForm(request.POST, instance=request.user)
print(form)
if form.is_valid():
user = form.save()
auth_login(request, user)
messages.success(request, "Edition successful.")
return redirect("dashboard:cases")
messages.error(
request, "Unsuccessful Edition. Invalid information.")
else:
form = CustomUserChangeForm(instance=request.user)
return render(request=request, template_name="dashboard/edit_profile.html", context={"edit_profile_form": form})
这是视图调用的打印结果:
<QueryDict: {'csrfmiddlewaretoken': ['DbmuCTIOAXdP96Ozrcsf3YXSCxQ1lusywgLz4OLh5FAHrjas25inxqIt0kS9syaj'], 'first_name': ['Super'], 'last_name': ['User'], 'email': ['[email protected]'], 'phone': ['+0043328107a'], 'username': ['admin']}>
<tr>
<th><label for="id_first_name">First name:</label></th>
<td>
<input type="text" name="first_name" value="Super" maxlength="20" required id="id_first_name">
</td>
</tr>
<tr>
<th><label for="id_last_name">Last name:</label></th>
<td>
<input type="text" name="last_name" value="User" maxlength="20" required id="id_last_name">
</td>
</tr>
<tr>
<th><label for="id_email">Email address:</label></th>
<td>
<input type="email" name="email" value="[email protected]" maxlength="254" required id="id_email">
</td>
</tr>
<tr>
<th><label for="id_phone">Phone:</label></th>
<td>
<input type="tel" name="phone" value="+0043328107" maxlength="128" required id="id_phone">
</td>
</tr>
<tr>
<th><label for="id_username">Username:</label></th>
<td>
<input type="text" name="username" value="admin" maxlength="150" autocapitalize="none" autocomplete="username" required id="id_username">
<br>
<span class="helptext">Required. 150 characters or fewer. Letters, digits and @/./+/-/_ only.</span>
</td>
</tr>
为什么生成的表单不包含电话号码的最后一个字母?在 POST 请求中,清晰地显示了一个末尾带有字母的电话号码。我希望它是无效的,但表格是有效的。
我做错了什么?谢谢你的帮助
您确定表格有效吗?根据您那里的查看代码,如果表单无效,它将再次显示表单。如果它是有效的,它将重定向您。