我有一个Django表单,用户输入一个输入。提交后,他们将被带到与他们的输入相关联的URL。
该数据库包含user_input
和associated_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
。
答案 0 :(得分:0)
你有多种选择,但其中一些是。
param = request.POST["param"]
if YourModel.objects.get(param=param):
redirect('/myurl/{}'.format(param))
else:
if form.is_valid():
# other code
或者为您正在使用的表单编写自己的自定义clean()
方法。