Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

filter on related_set in Django query

class Hardware(models.Model):
    date = models.PositiveSmallIntegerField()
    node = models.ForeignKey('Node', on_delete=models.CASCADE,null = True)
    slot = models.PositiveSmallIntegerField(null = True)
    server = models.CharField(max_length=20,null = True)
    server_state = models.CharField(max_length=20,null = True)
    adapter = models.CharField(max_length=20,null = True)
    adapter_state = models.CharField(max_length=20,null = True)

    class Meta:
        unique_together = ('date', 'node','slot')
        order_with_respect_to = 'node'

    def __str__(self):
        return self.node.name +" " + self.server

class Node(models.Model):
    name = models.CharField(max_length = 40, primary_key = True)
    def __str__(self):
        return self.name

def inventory_by_node(request):
    day = (arrow.now().day) - 1
    nodes = Node.objects.prefetch_related("hardware_set").all()
    return render(request, 'automation/inventory_by_node.html',{'nodes':nodes})

I need to filter hardware_set based on date which is equal to currrent day. I tried

nodes = Node.objects.prefetch_related(Prefetch("hardwares", quesryset=Hardware.objects.filter(date=day)).all() 

but It didn't works says no Pretch is defined

like image 880
venkateswar Avatar asked Dec 02 '25 13:12

venkateswar


1 Answers

Try this:

prefetch = Prefetch("hardware_set", queryset=Hardware.objects.filter(date=day))
nodes = Node.objects.prefetch_related(prefetch).all()
like image 56
Daniel Hepper Avatar answered Dec 04 '25 04:12

Daniel Hepper



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!