检查表单输入是否存在[Django]

时间:2017-04-27 13:37:26

标签: python django database forms django-views

我有一个Django表单,用户输入一个输入。提交后,他们将被带到与他们的输入相关联的URL。

该数据库包含user_inputassociated_url字段。

user_input设置了值unique=True。当输入重复输入时,网站This value user_input already exists in the database上显示以下内容,即使我没有这样设置。这可能是form.is_valid()

的功能

因此它会立即识别重复值,但我尝试将其设置为如果输入重复值,则只需将用户带到associated_url以获取该值。

现有数据库表:

user_input    associated_url

hello     https://stackoverflow.com

如果用户要再次在表单中输入hello,则会立即将他们带到https://stackoverflow.com,而不是显示This value user_input already exists in the database

代码:

def Primary(request):

    form = Form()

    if request.method == 'POST':

        form = Form(request.POST)

        if form.is_valid():

                ... saving to database, redirect etc.

我需要能够检查输入值是否重复。如果是,则从重复associated_url条目的同一行获取user_input,并将用户重定向到那里。

要自己这样做,我尝试在else条件中添加form.is_valid语句,但这似乎是不好的做法,因为它会尝试重定向而不管错误(?)因为我不喜欢知道如何获得与输入值相关联的associated_url

1 个答案:

答案 0 :(得分:0)

你有多种选择,但其中一些是。

param = request.POST["param"]

if YourModel.objects.get(param=param):
    redirect('/myurl/{}'.format(param))
else:
    if form.is_valid():
        # other code

或者为您正在使用的表单编写自己的自定义clean()方法。