Tenir compte:Python/Django: Création d'une liste plus simple de values_list()
>>>jr.operators.values_list('id')
[(1,), (2,), (3,)]
Comment peut-on simplifiera davantage à:
['1', '2', '3']
Le but:
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.
Cette solution retourne une liste d'entiers. Pour obtenir une liste de chaînes comme '['1', '2', '3']' comme demandé par l'OP, vous devez faire 'map (str, Entry.objects.values_list ('id', flat = True) .order_by ('id')) ' –
cela fonctionne quand vous avez seulement une valeur selon la question de l'OP. Avec plusieurs valeurs, vous pouvez utiliser 'list (queryset.iterator())' – MrE
puis-je obtenir plusieurs valeurs comme Entry.objects.values_list ('id', 'name', flat = True) mais plat = True est travailler pour une seule valeur, pas pour plusieurs. Comment surmonter cela? – javed