Django queryset:相当于SELECT两个连接模型中的所有字段

时间:2015-11-25 11:51:30

标签: django django-queryset

有两个模型连接多个到多个字段

我想查询两者并得到一个非规范化的结果列表:

class Skills(models.Model):
   skill = CharField(max_length=100)
   ...

class Person(models.Model):
   name = CharField(max_length=100)
   skills = models.ManyToManyField(Skills, blank=True)

e.g。结果对象:

result.name, result.skill

tom,carpentering
tom,painting
tom,handywork
pete,carpentering
pete,woodwork

我想将此结果放在一个对象中。有没有明智的方法来实现这一目标?

1 个答案:

答案 0 :(得分:2)

您可以使用values()

执行此操作
results = Person.objects.values('name', 'skills__skill')
for result in results:
    print(result['name'], result['skills__skill'])

在这种情况下,它是直截了当的,因为字段数很少。如果有更多字段,那么代码会变得很长,或者您需要以某种方式内省字段名称。