Django过滤来自多个模型的数据
Posted
技术标签:
【中文标题】Django过滤来自多个模型的数据【英文标题】:Django Filter data from multiple Models 【发布时间】:2013-05-28 02:40:49 【问题描述】:这里我使用了 4 个模型,一个是基本模型,另外三个是从基本模型派生的派生模型。我想过滤这三个模型之间的数据,其中参考 id 是常见的模型。我在下面添加代码供您参考。
models.py
class User(models.Model):
name = models models.CharField(max_length=20)
class JSDetails(models.Model):
user = models.ForeignKey(User, unique=True)
visiblity = models.BooleanField(default=True)
class JSPersonal(models.Model):
user = models.ForeignKey(User, unique=True)
JS = models.ForeignKey(JSDetails, unique=True)
country = models.CharField(max_length=100)
class JSSkills(models.Model):
user = models.ForeignKey(User, unique=True)
JS = models.ForeignKey(JSDetails, unique=True)
skill = models.CharField(max_length=100)
views.py
def Result(request):
skills = request.GET['skill']
country = request.GET['country']
query = Q(skill__icontains=skills )
query1 = Q(country__icontains=country )
query2 = Q(visiblity=True)
这里这两个关键字(skills="python", country="USA") 都匹配或匹配以上四个模型。它会显示姓名、技能和国家/地区等结果。请帮帮我。
【问题讨论】:
【参考方案1】:def Result(request):
skills = request.GET['skill']
country = request.GET['country']
query_skills = Q(jsskills__skill__icontains=skills)
query_country = Q(jspersonal__country__icontains=country)
query_visibility = Q(jsdetails__visiblity=True)
users = User.objects.filter(query_skills | query_country, query_visibility)
return render_tor_response('sometemplate.html', 'users': users)
然后在模板中循环遍历上下文中的users
。
【讨论】:
以上是关于Django过滤来自多个模型的数据的主要内容,如果未能解决你的问题,请参考以下文章
如何为来自相关模型的聚合数据实现自定义 django 过滤器