python - queryset - select_related django example
Python/Django: Creando una lista más simple de values_list() (4)
¿Algo como esto?
x = [(1,), (2,), (3,)]
y = [str(i[0]) for i in x]
[''1'', ''2'', ''3'']
Considerar:
>>>jr.operators.values_list(''id'')
[(1,), (2,), (3,)]
¿Cómo se simplifica aún más a:
[''1'', ''2'', ''3'']
El propósito:
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.
Debe hacer ... para obtener esta salida [''1'', ''2'', ''3'']
map(str, Entry.objects.values_list(''id'', flat=True).order_by(''id''))
Puede utilizar una lista de comprensión:
>>> mylist = [(1,), (2,), (3,)] >>> [str(x[0]) for x in mylist] [''1'', ''2'', ''3'']
Use la construcción flat=True
del django queryset: https://docs.djangoproject.com/en/dev/ref/models/querysets/#django.db.models.query.QuerySet.values_list
Del ejemplo en la documentación:
>>> Entry.objects.values_list(''id'', flat=True).order_by(''id'')
[1, 2, 3, ...]