我试图通过一个按钮来获取确切的代码来查看两个不同的模型,但是我找不到表格。我正在使用Django 2.5和python 3.6。 我有以下代码。
#models.py
from django.db import models
class Estadoadm(models.Model):
estadm = models.CharField(max_length=45, unique=True)
descripcion = models.CharField(max_length=100, null=True, blank=True)
def __str__(self):
return self.estadm
class Estadofis(models.Model):
estfis = models.CharField(max_length=45, unique=True)
descripcion = models.CharField(max_length=100, null=True, blank=True)
def __str__(self):
return self.estfis
在该视图中,我正在显示一个代码,该代码使我可以在单个模型中进行搜索,并且希望对两个模型进行相同的操作。
#views.py
class GestionarEstados(generic.ListView):
context_object_name = 'estados'
template_name = 'estados/gestionar_estados.html'
success_url = reverse_lazy('gestionar_estados')
queryset = Estadoadm.objects.all()
def get_context_data(self, **kwargs):
context = super(GestionarEstados, self).get_context_data(**kwargs)
context['estadofis_list'] = Estadofis.objects.all()
return context
def get_queryset(self):
queryset = Estadoadm.objects.filter()
query = self.request.GET.get('query')
if query:
queryset = queryset.filter(Q(estadm__icontains=query) |
Q(descripcion__icontains=query))
return queryset
在此模板中,我通过按钮中的“查询”变量来调用搜索。
#gestionar_estados.html
<form method="GET" action="{% url 'gestionar_estados' %}">
<div class="input-group">
<div class="input-group-prepend">
<button class="btn btn-primary" type="submit" id="button-addon1" value="Search"> <i class="fas fa-search"></i></button>
</div>
<input class="form-control border border-primary" type="text" name="query" placeholder="Buscar por palabra clave" value="{{ request.GET.query }}">
</div>
</form>
我尝试使用iterto“ itertools.chain”在两个模型中进行搜索,但是我还没有意识到该按钮可以激活搜索。另一方面,我读到此itertools不适用于queryset。 在我身上发生的最后一件事就是这个。毫无疑问,我知道这是错误的。 测试视图
def get_queryset(self):
query = self.request.GET.get('q')
estadosadm = Estadoadm.objects.filter(Q(estadm__icontains=query) | Q(descripcion__icontains=query))
estadosfis = Estadofis.objects.filter(Q(estfis__icontains=query) | Q(descripcion__icontains=query))
estados_list = chain(estadosadm, estadosfis)
if query:
estados_list = estados_list
return estados_list
请对此表示宝贵的支持。 非常感谢。