Bishnu Bhattarai
Bishnu Bhattarai

Reputation: 2910

Django ORM get only field in foreignkey relationship

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

Answers (1)

The_Cthulhu_Kid
The_Cthulhu_Kid

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

Related Questions