【发布时间】:2017-02-13 10:31:10
【问题描述】:
我的 models.py 是这样的
CHOICES = (
(1,'Test1'),
(2,'Test2'),
(3,'Test3'),
(4,'Test4'),
(5,'Test5'),
)
class A(models.Model):
x = models.CharField('A', max_length=256)
def __unicode__(self):
return self.x
class B(models.Model):
emp = models.ForeignKey(User, verbose_name='emp')
y = models.ForeignKey(A, verbose_name='a')
z = models.IntegerField('testing', choices = CHOICES)
我在数据库的这些表中有一些数据。
-
User.objects.values_list('username', flat=True)
[u'user1', u'user2', u'user3'] -
A.objects.values_list('x', flat=True)
[u'python', u'java', u'php', u'javascript'] -
B.objects.values_list('emp__username', 'y__x', 'z')
[(user1', u'python', 3L), (user2', u'php', 5L), (u'user1', u'javascript', 5L), (u'user3', u'python', 5L), (u'user3', u'java', 5L)]
我想输出这样的东西
employees = {
'user1':{
'Test5':"javascript",
'Test4': "",
'Test3':"python",
'Test2':"",
'Test1':""
},
'user2':{
'Test5':"php",
'Test4': "",
'Test3':"",
'Test2':"",
'Test1':""
},
'user3':{
'Test5':"python, java",
'Test4': "",
'Test3':"",
'Test2':"",
'Test1':""
},
}
我可以做到,但需要多个数据库调用。我们可以用最少的查询集/数据库调用来达到同样的效果吗?
谢谢
【问题讨论】:
标签: python mysql django django-queryset