如何在Django queryset数据中循环并设置数组中的值而不是字典

2024-05-17 03:18:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我必须在django中循环查询集的数据,并在不指定模型名的情况下将数据放入数组中。在

我的Django观点:

 permissions = Permission.objects.all().order_by('perm_label')
 arrayData = []
 for type in permissions:
      for value in type:
         arrayData.append(value)

这给了我一个错误:

^{pr2}$

Tags: 数据djangoin模型permissionsforobjectsvalue
1条回答
网友
1楼 · 发布于 2024-05-17 03:18:56

如果我没听错你的问题,你可以试试这个:

>>> from django.contrib.auth.models import Permission
>>> field_name_list = []

>>> qs = Permission.objects.all()
>>> qs = qs.filter(content_type__id=1)    # I added this line to make this sample output shorter
>>> qs = qs.values(*field_name_list)

>>> final_data = []
>>> for elem in qs:
...     print(type(elem))
...     print(elem)
...     for v in elem.values():
...         final_data.append(v)
<class 'dict'>
{'id': 1, 'name': 'Can add log entry', 'content_type_id': 1, 'codename': 'add_logentry'}
<class 'dict'>
{'id': 2, 'name': 'Can change log entry', 'content_type_id': 1, 'codename': 'change_logentry'}
<class 'dict'>
{'id': 3, 'name': 'Can delete log entry', 'content_type_id': 1, 'codename': 'delete_logentry'}

>>> final_data
[1, 'Can add log entry', 1, 'add_logentry', 2, 'Can change log entry', 1, 'change_logentry', 3, 'Can delete log entry', 1, 'delete_logentry']

这使用方法^{}使每个Permission实例由dict表示,而不是实际的模型实例。在

如果您将field_name_list保留为空列表,那么您将获得该模型的所有字段,但也可以添加所需字段的名称。在

然后,您可以使用^{}来获得值(该行的列值),而不需要键(这将是列名)。在

相关问题 更多 >