J'ai un formset de modèle en ligne, et je voudrais rendre des champs non éditables si ces champs ont déjà des valeurs quand la page est chargée. Si l'utilisateur clique sur un bouton "Modifier" sur cette ligne, il deviendra éditable et (en utilisant JavaScript) je remplacerais les widgets originaux par des éditables. Je voudrais faire quelque chose comme ceci lors du chargement de la page:Django: Comment créer des champs non éditables par défaut dans un formset de modèle en ligne?
for field in form.fields:
if field.value:
# display as text
else:
# display as my standard editable widget for this field
Je vois que inlineformset_factory
a un argument appelé formfield_callback
. Je pense que cela pourrait être utile, mais je n'ai trouvé aucune documentation à ce sujet. Quelqu'un peut-il me diriger vers une documentation utile à ce sujet, et comment cela peut m'aider à résoudre ce problème?
Eh bien, je dois vérifier un objet par exemple, pas initial_data, mais je vois ce que vous dites. Le problème est, que dois-je faire à partir de là? Comment modifier les widgets de champ à l'intérieur de la méthode __init__ de ModelForm? – Jeff
Peu importe. self.fields ['fieldname']. widget ... – Jeff