Dans l'admin django, j'ai une ligne dans laquelle je veux que l'utilisateur soit automatiquement renseigné. Au cours de la fonction clean
, il remplit le champ created_by
avec request.user
. Le problème est que puisque le champ created_by
est exclu par le formulaire, la valeur qui est insérée dans cleaned_fields
est ignorée apparemment. Comment puis-je faire ceci? Je veux que le widget ne soit pas affiché du tout.Exclure un champ de formulaire, mais en le rajoutant avec clean()
class NoteInline(admin.TabularInline):
model = Note
extra = 1
can_delete = False
def get_formset(self, request, obj=None, **kwargs):
"""
Generate a form with the viewing CSA filled in automatically
"""
class NoteForm(forms.ModelForm):
def clean(self):
self.cleaned_data['created_by'] = request.user
return self.cleaned_data
class Meta:
exclude = ('created_by',)
model = Note
widgets = {'note': forms.TextInput(attrs={'style': "width:80%"})}
return forms.models.inlineformset_factory(UserProfile, Note,
extra=self.extra,
form=NoteForm,
can_delete=self.can_delete)
qui ne fonctionne pas à cause de cela: http://imgur.com/fbajE.png – priestc
Dans ce cas, il est temps pour un refactoring. Voir l'exemple édité ci-dessus –