Django ORM 仅获取外键关系中的字段
Django ORM get only field in foreignkey relationship
我有这样的数据库表
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)
我的查询中只需要三个字段,即文本、log__receiver 和 log__network__name。我试过这样
Message.objects.all().prefetch_related('log').only('text', 'log__receiver', 'log__network__name')
以上查询无效。如何在 django ORM 中进行上述查询?
来自我的评论:使用 values
而不是 only
:
Message.objects.all().prefetch_related('log').values('text', 'log__receiver', 'log__network__name')
我有这样的数据库表
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)
我的查询中只需要三个字段,即文本、log__receiver 和 log__network__name。我试过这样
Message.objects.all().prefetch_related('log').only('text', 'log__receiver', 'log__network__name')
以上查询无效。如何在 django ORM 中进行上述查询?
来自我的评论:使用 values
而不是 only
:
Message.objects.all().prefetch_related('log').values('text', 'log__receiver', 'log__network__name')