簡體   English   中英

將 Django 查詢集轉換為列表或字典

[英]Convert Django Queryset to list or dict

從我的 views.py 我做這個查詢:

var_query = DB.objects.filter(Q(user_id=str(request.user.id)) & Q(router_name='router1'  )).values('router_type',  'router_ip')

工作是因為我得到了這個結果:

{'router1': set(['[{"router_type": "CISCO", "router_ip": "192.168.1.1"}]'])}

var_query 的類型是: <class 'django.db.models.query.QuerySet'>

當我用 list() 轉換它時

converted = list(var_query)

這個錯誤: AttributeError: 'set' object has no attribute 'iteritems'

因為當將此查詢集轉換為列表時插入此: set(['

如何轉換為真正的列表或字典,以便我可以使用我的鍵或值?

你的最終目標是什么還不是很清楚。 但看起來你把事情不必要地復雜化了。 我建議簡化您的方法,只需正常過濾查詢集(注意,這里似乎也不需要這些Q對象,您可以直接傳遞參數)。

var_query = DB.objects.filter(
    Q(user_id=str(request.user.id)) & Q(router_name='router1')
)

結果將是一個實現迭代器協議的查詢集對象,並且可以像列表或類似列表的對象一樣正常迭代。 然后要處理您似乎感興趣的數據中的字段,您可以執行以下操作:

var_query = DB.objects.filter(
    Q(user_id=str(request.user.id)) & Q(router_name='router1')
)

for obj in var_query:
    router_type = obj.router_type
    router_ip = obj.router_ip
    # ... do other stuff with your data.

除非您確實有合適的用例,否則您無需費心使用values

如果您可以提供更多上下文,我們可以改進更准確的解決方案。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM