Django ORM只获得外键关系中的字段

时间:2017-09-15 05:15:05

标签: python mysql django django-orm

我有像这样的数据库表

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)

我的查询中只需要三个字段,即text,log__receiver和log__network__name。我试过这个

Message.objects.all().prefetch_related('log').only('text', 'log__receiver', 'log__network__name')

以上查询不起作用。如何在django ORM中进行如上所述的查询?

1 个答案:

答案 0 :(得分:1)

从我的评论中:使用values代替only

Message.objects.all().prefetch_related('log').values('text', 'log__receiver', 'log__network__name')