如果语句总是在django中返回true

时间:2016-04-16 17:05:36

标签: python django database forms if-statement

我的if语句有问题,因为它总是返回True。

我有一个表单,用户可以在其中更改其个人资料信息。现在我想要当他试图输入已经存在的电子邮件地址来显示错误消息时,但是当他没有更改他当前的电子邮件地址,但是他更改了他的名字时,例如,我希望只有名称被更改。我使用的代码是:

This is the sentence I want to write .

所以,我认为问题是因为“request.POST ['email'] == instance.get_email()”总是正确的。我尝试了一切,它总是如此。即使电子邮件地址不相同,也始终如此。

2 个答案:

答案 0 :(得分:1)

除非这只是一个学习练习,否则您无需在视图中执行此操作,您可以在模型上设置此功能以强制执行唯一的电子邮件:

 Guest(models.Model):

      ....
      email = models.EmailField(..., unique=True, ...)
      ....

答案 1 :(得分:0)

我解决了它,感谢Slayer。这是我做的:

def profil_update(request, slug=None):

    instance = get_object_or_404(Guest, slug=slug)
    form = UpdateGuestProfileForm(request.POST or None, request.FILES or None, instance=instance)
    if form.is_valid():
        instance = form.save(commit = False)
        instance.save()
        messages.success(request, "Success", extra_tags='profile_updated')
        return HttpResponseRedirect(instance.get_absolute_url())
    else:
        messages.error(request, 'Email address alredy exists.', extra_tags='email_exists')
    context = {
        "guest": instance,
        "form": form
    }

    return render(request, "base_profile_guest.html", context) 

所以,我添加了#34; unique = True"正如Slayer所说,我的模型数据。如果表单无效,我只写一条错误消息。答案就是我一直都不能,我的错误。