Reputation: 2910
I have database tables like this
class Message(models.Model):
text = models.CharField(max_length=200)
length = models.CharField(max_length=100)
receivers = models.IntegerField()
class Network(models.Model):
name = models.CharField(max_length=100)
is_down = models.BooleanField(default=False)
class SMSLog(models.Model):
receiver = models.CharField(max_length=200)
message = models.ForeignKey(Message, related_name='log')
network = models.ForeignKey(Network)
status = models.CharField(max_length=200)
I need just three fields in my query i.e. text, log__receiver and log__network__name. I tried like this
Message.objects.all().prefetch_related('log').only('text', 'log__receiver', 'log__network__name')
The above query does not work. How to do query like above in django ORM ?
Upvotes: 0
Views: 670
Reputation: 1859
From my comment: Use values
instead of only
:
Message.objects.all().prefetch_related('log').values('text', 'log__receiver', 'log__network__name')
Upvotes: 1