我有两个模型用户,详细信息和技能。在技能表中可以存储特定用户的“n”个技能。在过滤时,它会显示唯一的用户详细信息,但不会显示关键技能。我在技能模型中使用一对一字段,但不接受多个用户,因此我为此使用外键。例如..
User Table
id | name
---|-----
1 | abc
Details table
id | user_id | city
---|---------|-----
1 | 1 | NY
Skills Table
id | user_id | skill
---|---------|-----
1 | 1 | C
2 | 1 | c++
3 | 1 | java
我想根据技能或城市进行过滤。如果它匹配任何一个应该显示完整的细节。我添加模型和视图请分享你的想法
楷模
class User(models.Model):
name = models.CharField(max_length=100)
class Details(models.Model):
user = models.OneToOneField(User)
city = models.CharField(max_length=100, blank=True, null=True)
class Skills(models.Model):
user = models.ForeignKey(User)
skill = models.CharField(max_length=100, blank=True, null=True)
意见
search = request.GET['keywords']
searchlist = search.split(",")
list_result= []
for search in searchlist:
for res in User.objects.filter(Q(Skills__skill__icontains=search) | Q(Details__city__icontains=search)):
if not res in list_result:
list_result.append(res)
users = list_result
return render_to_response('Result.html',{'details':users},context_instance=RequestContext(request))
模板
{% for d in details %}
{{ d.name }}
{{ d.Skills.skill }}
{{ d.Details.city }}
{% endfor %}
通过提供上面的代码,它的工作一切正常,除了技能没有显示。