有两个模型连接多个到多个字段
我想查询两者并得到一个非规范化的结果列表:
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
我想将此结果放在一个对象中。有没有明智的方法来实现这一目标?
答案 0 :(得分:2)
您可以使用values()
results = Person.objects.values('name', 'skills__skill')
for result in results:
print(result['name'], result['skills__skill'])
在这种情况下,它是直截了当的,因为字段数很少。如果有更多字段,那么代码会变得很长,或者您需要以某种方式内省字段名称。