Je suis en train d'écrire un widget personnalisé dont je veux retourner une liste en tant que valeur. De ce que je peux trouver pour définir la valeur qui est retournée, vous créez une fonction personnalisée value_from_datadict. Je l'ai faitDans django formulaires liste de retour de widget personnalisé en tant que valeur au lieu de la chaîne
def value_from_datadict(self, data, files, name):
value = data.get(name, None)
if value:
# split the sting up so that we have a list of nodes
tag_list = value.strip(',').split(',')
retVal = []
# loop through nodes
for node in tag_list:
# node string should be in the form: node_id-uuid
strVal = str(node).split("-")
uuid = strVal[-1]
node_id = strVal[0]
# create a tuple of node_id and uuid for node
retVal.append({'id': node_id, 'uuid': uuid})
if retVal:
# if retVal is not empty. i.e. we have a list of nodes
# return this. if it is empty then just return whatever is in data
return retVal
return value
Je pense que cela renvoie une liste, mais lorsque j'imprime la valeur, il est retourné comme une chaîne plutôt que d'une liste. La chaîne elle-même contient le bon texte mais comme je l'ai dit c'est une chaîne et non une liste. Un exemple de ce qui est retourné pourrait être
[{'id': '1625', 'uuid': None}]
mais si je ne str [0] il imprimer [au lieu de { 'id': '1625', 'UUID': Aucun}
Comment puis-je l'empêcher de convertir ma liste en chaîne?
Merci
Ajouté une modification à la réponse précédente. – gruszczy