Набор запросов: все устройства в местоположении: местоположение имеет внешний ключ к устройствам - PullRequest
0 голосов
/ 07 февраля 2020

Я хочу выполнить запрос, который возвращает все устройства для каждого местоположения.

models.py

class Devices(models.Model):
        device_hostname = models.CharField(max_length=30)
        device_ip = models.CharField(max_length=35)
        device_type = models.CharField(max_length=40)
        device_serial_number = models.CharField(max_length=35, )
        device_service_tag = models.CharField(max_length=35, default=None)
        device_model = models.CharField(max_length=35, default=None)
        vendor = models.ForeignKey(Vendor, on_delete=models.CASCADE)
        locations = models.ForeignKey(Locations, on_delete=models.CASCADE)
        maintenance = models.ForeignKey(Maintenance,on_delete=models.CASCADE, null=True, blank=True)

        def __str__(self): # returns string
             return self.device_hostname    

        def __unicode__(self):
             return self.device_hostname            

и для местоположений

class Locations(models.Model):
        location_name = models.CharField(max_length=20)
        location_address = models.TextField(max_length=15)
        location_city = models.CharField(max_length=35)
        location_state = models.CharField(max_length=30)
        location_zip = models.CharField(max_length=15)
        location_country = models.CharField(max_length=30)

        def __str__(self): # returns string                 
            return self.location_name       
        def __unicode__(self):
             return self.location_name      

My search_device_list. html выглядит следующим образом:

<h2 align="center">Search Page</h2>
     {% if dev_loc %}  
  <table>
            <tr>
                <td><b>Locations:</b></td>  
                <td><b>Device</b></td>         
     {% csrf_token %}  
     {% for locations in dev_loc%}              
            </tr>
            <tr>
                <td id="location_name"> {{device.locations.location_name}} &nbsp;<br>}</td> 
                <td = "dev_loc_search">{{device.device_hostname}}
            </tr>
       {% endfor %}     
   </table>
   {% endif %}
<br>

, когда мой views.py выглядит следующим образом:

def search_device_list(request):
locations = Locations.objects.all()
dev_loc=  Devices.objects.filter(locations__in= locations)
context = {"dev_loc": dev_loc}

return render(request, 'inventory/search_device_list.html', context)  

Я не получаю сообщение об ошибке, но я не получаю получить рендеринг Местоположения и устройства без данных

Когда мой код для views.py выглядит следующим образом:

def search_device_list(request):
locations = Locations.objects.all()
dev_loc=  Devices.objects.filter(locations = locations)
context = {"dev_loc": dev_loc}

return render(request, 'inventory/search_device_list.html', context)  

Я получаю сообщение об ошибке:

ValueError в / inventory / search_device_list /

Значение QuerySet для точного поиска должно быть ограничено одним результатом с использованием нарезки.

Я потратил часы, настраивая это без успех. Любые советы приветствуются.

...