仅从相关对象django中选择特定字段

时间:2017-08-27 15:03:57

标签: django orm

我有这两个模型:

class Command(models.Model):
    client = models.ForeignKey(Client)
    carrier = models.ForeignKey(Carrier, null=True, blank=True)

class Client(models.Model):
     name = models.CharField(max_length=10)

     some other fields ...

我有一个Command类的对象让我们称之为command,让我们假设我有这个对象已经

我想访问此命令客户端的name

我能做到:

command.client.name

但是生成的SQL表达式将检索客户端模型的所有字段,而我只需要name

我可以这样做来解决这个问题:

from client.models import Client
name = Client.objects.only("name").get(command=command).name

但是输入的时间很长,任何快速的方法都可以吗?类似于command.client.only("name").name

2 个答案:

答案 0 :(得分:0)

您可以使用select_related并将其与值链接。

Command.objects.select_related('client').values('name')

这将输出为dict,可以轻松引用。

答案 1 :(得分:0)

Command.objects.values('client__name')

使用双下划线访问相关实体