Django-获取查询集中的字段列表

问题描述 投票:0回答:1

我需要帮助来获取Queryset中的字段列表。

我正在使用Django Shell进行测试,但是我没有任何运气。

如果我像下面那样执行.values

abc = PrescribedMedsSchedule.objects.filter(medication_date=scheduled_date_obj, medication_time__time=scheduled_time_obj) \
        .select_related('prescribed_meds_id') \
        .select_related('prescribed_meds_id__childno') \
        .values(
            'prescribed_meds_id',
            'medication_date', 
            'medication_time', 
            'quantity',
            'form',
            'prescribed_meds_id__name_of_medication', 
            'prescribed_meds_id__childno__child_name',
            'prescribed_meds_id__childno__group',
            'prescribed_meds_id__childno__line_no'
            ).order_by('prescribed_meds_id__name_of_medication')

当我在shell中键入abc时,我得到了可以在模板中使用的确切列名。QuerySet [{'prescribed_meds_id': 5731, 'medication_date': datetime.date(2020, 2, 4), ....

但是如果我使用。only而不是。values,当我键入abc时,会得到一个QuerySet [<PrescribedMedsSchedule: PrescribedMedsSchedule object (6117) ....

如何在此查询集中检索/显示字段/列?

我问的原因是,当我使用select_related时,.only表中的字段不再出现在HTML模板中。

django django-queryset names
1个回答
0
投票

如果希望结果查询集包含字典,请使用QuerySet.values,如果希望结果查询集包含模型实例,请使用QuerySet.only。>

当您在终端中打印结果时,可以看到使用valuesorders进行的结果查询是相同的。

print(abc.query)

如果您仍想使用QuerySet.only并检索查询集结果作为模型实例的迭代,则可以使用点运算符访问相关字段。例如,要在模板中输出子名称:

{% for a in abc %}
  {{ a.prescribed_meds_id.childno.child_name }}
{% endfor %}
© www.soinside.com 2019 - 2024. All rights reserved.