簡體   English   中英

Python/Django:從 values_list() 創建一個更簡單的列表

[英]Python/Django: Creating a simpler list from values_list()

考慮:

>>>jr.operators.values_list('id')
[(1,), (2,), (3,)]

如何進一步簡化為:

['1', '2', '3']

目的:

class ActivityForm(forms.ModelForm):
    def __init__(self, *args, **kwargs):
        super(ActivityForm, self).__init__(*args, **kwargs)
        if self.initial['job_record']:
            jr = JobRecord.objects.get(pk=self.initial['job_record'])

            # Operators
            self.fields['operators'].queryset = jr.operators

            # select all operators by default
            self.initial['operators'] = jr.operators.values_list('id') # refined as above.

使用Django查詢集的flat=True構造: https ://docs.djangoproject.com/en/dev/ref/models/querysets/#django.db.models.query.QuerySet.values_list

從文檔中的示例:

>>> Entry.objects.values_list('id', flat=True).order_by('id')
[1, 2, 3, ...]

您需要執行..以獲取此輸出['1','2','3']

map(str, Entry.objects.values_list('id', flat=True).order_by('id'))

您可以使用列表理解:

>>> mylist = [(1,), (2,), (3,)]
    >>> [str(x[0]) for x in mylist]
    ['1', '2', '3']

像這樣嗎

x = [(1,), (2,), (3,)]
y = [str(i[0]) for i in x]
['1', '2', '3']

從平面查詢集轉換:

Entry.objects.values_list('id', flat=True)

<QuerySet [1, 5]>

到 Python 列表,你可以這樣做:

[*Entry.objects.values_list('id', flat=True)]

[1, 5]

暫無
暫無

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

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