gpt4 book ai didi

python - 如何避免从数据库中检索重复值?

转载 作者:太空宇宙 更新时间:2023-11-03 12:08:10 25 4
gpt4 key购买 nike

我有两个模型。一个带有名称字段的模型和另一个带有关键技能字段的模型和模型 1 的外键。我已将值存储到字段中。当我使用关键技能搜索时,它应该将名称与输入的字段一起带入。当我搜索 c 和 c++ 时,如果名称同时包含 c 和 c++,当我根据搜索检索名称时,名称会重复两次。我不想重蹈覆辙。模型.py

class form1(models.Model):
name=models.CharField(max_length=20)
def __unicode__(self):
return self.name
class form2(models.Model):
keyskills=models.CharField(max_length=20)
na=models.ForeignKey(form1)
def __unicode__(self):
return self.keyskills,self.na

View .py

def add(request):
if request.method=='POST':
na=request.POST.get('name1')
k=request.POST.get('key1')
v1=form1(name=na)
v1.save()
v2=k.split(",")
for i in v2:
if i:
form2(keyskills=i,na_id=v1.id).save()
return HttpResponseRedirect('/add')
else:
s=form2.objects.all()
return render(request,"search.html",{'s':s})
def search(request):
var=""
arr=[]
if request.method=='POST':
s1=request.POST.get("input1")
s1=s1.split(",")
for i in s1:
if i :
arr+=form2.objects.filter(keyskills=i)
var=arr
return render(request,"searchresult.html",{'var1':var})

搜索结果.html

<html>
<head>
</head>
<body>
<div id="div1">
{% for i in var1 %}

<p>{{i.na.name}}</p><br>
{% endfor %}
</div>
<form action="." method="post">{% csrf_token %}
<input type="text" name="input1">
<input type="submit" value="search">

</form>
</body>
</html>

任何人都可以指导我吗?..提前致谢

最佳答案

使用集合而不是数组。它将避免重复条目。

def search(request):

from sets import Set

var=""

# create set object
set = Set()

if request.method=='POST':

s1=request.POST.get("input1")
s1=s1.split(",")

for i in s1:

if i :
# |= is the set union operator
set |= Set(form2.objects.filter(keyskills=i))

# convert set back to list
var=list(set)

return render(request,"searchresult.html",{'var1':var})

基本思路:

  1. 创建一个集合对象
  2. 对每个搜索结果执行并集操作
  3. 将集合转换回列表并将其发送到模板

附带说明一下,我同意一些评论,“form1”对于模型来说不是一个好名字。

关于python - 如何避免从数据库中检索重复值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19980967/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com