如何在视图中对多个Django模型运行查询

奥威斯·阿尔沙德(Owais Arshad)

如何对多个Django模型运行查询并通过模板显示它们?

我创建了两个模型,可以独立查询并在各自的模板中呈现响应。但是,我想做的是通过Django表单提交查询,使查询针对两个模型运行,然后将结果(如果有的话)显示在单个模板上。我该如何实现?

楷模:

class State(models.Model):
    text = models.TextField(null=True)
    topic_list = models.TextField(null=True)

class Hearings(models.Model):
    url = models.TextField(primary_key=True)
    title = models.TextField(null=True)
    text = models.TextField(null=True)  

观看次数:

def state(request,query):
  data = state.objects.filter(text__icontains=query).values('text','topic_list')
  return render(request,'State.html',context={'data':data})

def hearings(request,query):
  data = Hearings.objects.filter(data__icontains=query).values('url','title', 'text')
  return render(request,'Hearings.html',context={'data':data})

目前,我可以通过视图分别查询模型。我想针对两个模型通过单个视图运行查询。我应该怎么做?

阿尔方丹戈

对于您要实现的目标,我还不太清楚,但我会尽力回答。

如何对多个Django模型运行查询并通过模板显示它们?

答案很简单:您可以根据需要在视图函数或类中对任意多个模型运行查询,并将其添加到上下文中以传递给模板。

例如:

def my_view(request):
    context = {}
    context['people'] = People.objects.all()
    context['pets'] = Pet.objects.all()
    return render(request, index.html, context)

在您的模板中,您可以按{{ people }}访问查询的结果,{{ pets }}并循环查询等。您可以使用Q对象进行更复杂的查找https://docs.djangoproject.com/zh-CN/2.1/topics/db/queries/#complex-lookups-with-q-objects

[..]我要做的是通过Django表单提交查询

同样,您可以从表单提交中获取数据并将其放入查询中

def user_input(request):
    # if this is a POST request we need to process the form data
    if request.method == 'POST':
        context = {}
        # create a form instance and populate it with data from the request:
        form = NameForm(request.POST)
        # check whether it's valid:
        if form.is_valid():
            pet_name = form.cleaned_data.get('pet_name') # get the name entered into the pet name form field
            person_name = form.cleaned_data.get('person_name')
            context['pets'] = Pet.objects.filter(name=pet_name)
            context['people'] = Person.objects.filter(name=person_name)
            return render(request, index.html, context)
    # if a GET (or any other method) we'll create a blank form
    else:
        form = NameForm()
    return render(request, 'name.html', {'form': form}) 

同样,您将通过传递给模板的上下文来访问返回的查询。也可以使用Q对象建立复杂的查询。请参阅文档以获取信息https://docs.djangoproject.com/zh-CN/2.1/topics/forms/#the-view

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在通用视图中向Django模型字段的help_text添加样式

Django模型:如何在我的视图中获取模型对象

如何在Django中从基于类的视图发送多个模型

视图中的多个模型

如何在Django视图中合并两个或多个查询集?

如何在Django视图中创建模型对象?

如何在Django中编写具有多个模型的查询

如何在单个视图中从多个模型进行查询

如何在同一模型的同一Django视图中保存多个表单?当前,最后一个表格覆盖了保存

如何在Django视图中链接查询

如何在视图中使用多个模型/上下文(由ID路由)?

如何在视图中查询多个模型并将其传递给一个模板?

如何在Django模型/视图中计算总和

如何在一个视图中显示来自多个模型的数据?

如何在视图中显示参考模型?

如何在视图中获取模型类型

如何在Django视图中包含多个查询集?

如何在一个视图中放置多个模型?

Django 在单个视图中序列化多个模型

Django:如何在同一视图中同时包含受限访问和模型?

如何在单个剃刀视图中连接多个模型或多个视图模型?

如何在 ASP.NET MVC 的剃刀视图中使用多个单独的模型?

如何在单个 Django 视图中跨多个模型进行查询?

Django - 如何在基于函数的视图中使用模型方法

如何在我的视图中查询多个表并按日期排序

如何在 Django 视图中的模型中引用我自己的记录?

如何在视图中链接两个 django 模型

如何在一个视图中为一个模型提供多个表单

如何在 Django Admin 的模型详细视图中显示图像?