considerar:Python/Django: Creación de una lista simple de values_list()
>>>jr.operators.values_list('id')
[(1,), (2,), (3,)]
¿Cómo se puede simplificar 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.
Esta solución devuelve una lista de enteros. Para obtener una lista de cadenas como '['1', '2', '3']' como se solicitó OP, debe hacer 'map (str, Entry.objects.values_list ('id', flat = True) .order_by ('id')) ' –
esto funciona cuando solo tiene un valor según la pregunta del OP. Con valores múltiples, puede usar 'list (queryset.iterator())' – MrE
¿puedo obtener múltiples valores como Entry.objects.values_list ('id', 'name', flat = True) pero plano = Verdadero es trabajando solo por un solo valor, no por múltiples. ¿Cómo superar esto? – javed