Django:获取查询集/字典中项目的平面值
Django: Get flat value for an item in a QuerySet / dictionary
我尝试了很多方法,包括 itervalues()
、values_list()
、values()
,但我似乎无法仅获取我创建的字典中对象的值。在我看来,这是以下代码:
choices = Choice.objects.filter(question_id=q.id).order_by('order')
for c in choices:
new_c = dict(choice_id=c.id, question_id=c.question_id, choice=c.choice, order=g.order,
text=c.text, skip_to=c.skip_to)
if new_c['skip_to']:
new_s = dict(question_id=q.id, skip_to=c.skip_to, page_number=0)
skip_to_list.append(new_s)
new_q['choices'].append(new_c)
当我打印这个时,我得到:
[{'page_number': 0, 'skip_to': <Group: 5>, 'question_id': 1}, {'page_number': 0, 'skip_to': <Group: 5>, 'question_id': 2}, {'page_number': 0, 'skip_to': <Group: 5>, 'question_id': 3}]
如您所见,skip_to
的值为 <Group: 5>
。在我的模型中,skip_to
的值等于我的 Group 对象中的一个 fk。我只希望值等于 5
。我不要集团。但这是我唯一想要具有固定值的项目,我不希望整个 choice
对象具有固定值。
抱歉,对于如何在列表和词典中导航和迭代仍然是个新手,但经过几个小时的搜索,我想我会问一下。
假设5是Group
模型的id
(主键),可以这样赋值:
skip_to=c.skip_to.pk
我尝试了很多方法,包括 itervalues()
、values_list()
、values()
,但我似乎无法仅获取我创建的字典中对象的值。在我看来,这是以下代码:
choices = Choice.objects.filter(question_id=q.id).order_by('order')
for c in choices:
new_c = dict(choice_id=c.id, question_id=c.question_id, choice=c.choice, order=g.order,
text=c.text, skip_to=c.skip_to)
if new_c['skip_to']:
new_s = dict(question_id=q.id, skip_to=c.skip_to, page_number=0)
skip_to_list.append(new_s)
new_q['choices'].append(new_c)
当我打印这个时,我得到:
[{'page_number': 0, 'skip_to': <Group: 5>, 'question_id': 1}, {'page_number': 0, 'skip_to': <Group: 5>, 'question_id': 2}, {'page_number': 0, 'skip_to': <Group: 5>, 'question_id': 3}]
如您所见,skip_to
的值为 <Group: 5>
。在我的模型中,skip_to
的值等于我的 Group 对象中的一个 fk。我只希望值等于 5
。我不要集团。但这是我唯一想要具有固定值的项目,我不希望整个 choice
对象具有固定值。
抱歉,对于如何在列表和词典中导航和迭代仍然是个新手,但经过几个小时的搜索,我想我会问一下。
假设5是Group
模型的id
(主键),可以这样赋值:
skip_to=c.skip_to.pk